Android SetPixels возвращает черный цвет
-
25-10-2019 - |
Вопрос
У меня есть следующие функции:
private void clearScreen(int color)
{
fOffscreenImage.eraseColor(color);
}
private void fillRect(int x, int y, int width, int height, int color)
{
for(;x<width;x++)
{
for(;y<height;y++)
{
buffer[x+y*PROJECTIONPLANEWIDTH] = color;
}
}
}
private void drawBuffer()
{
fOffscreenImage.setPixels(buffer,0,PROJECTIONPLANEWIDTH,0,0,PROJECTIONPLANEWIDTH,PROJECTIONPLANEHEIGHT);
}
Обе функции обращаются к растровому карту, сначала - эразеколор, который работает нормально, а во -вторых, от SetPixels, который всегда возвращает черный. Я пишу изображение на четверг, отображаемый с OpenGL. В качестве цвета я попробовал цвета по умолчанию (Color.blue) и Color.argb. getPixel возвращает правильный вывод рассматриваемых цветов.
A By Pixel Call to SetPixel также не будет работать, он игнорирует работу.
Я пытался с Android 2.1 и 2.3.
Любые предложения по этому поводу были бы великолепны ..
Решение 3
private void fillRect(int x, int y, int width, int height, int color)
{
width += x;
height += y;
for(;x<width;x++)
{
for(;y<height;y++)
{
buffer[x+y*PROJECTIONPLANEWIDTH] = color;
}
}
}
должно быть
private void fillRect(int x, int y, int width, int height, int color)
{
width += x;
height += y;
for(int y2 = y;y2<height;y2++)
{
for(int x2 = x;x2<width;x2++)
{
buffer[x2+y2*PROJECTIONPLANEWIDTH] = color;
}
}
}
Другие советы
Я заменил часть Raycaster на следующий код заполнения, и теперь он показывает белые линии в соответствующих местах! Теперь просто чтобы узнать другие цвета :)
private void fillRect(int x, int y, int width, int height, int color)
{
width += x;
height += y;
for(;x<width;x++)
{
for(;y<height;y++)
{
if (x+y*PROJECTIONPLANEWIDTH < PROJECTIONPLANEHEIGHT*PROJECTIONPLANEWIDTH)
buffer[x+y*PROJECTIONPLANEWIDTH] = color;
}
}
}
Я исправил это, не используя SetPixel, а вместо этого используя Canvas для рисования в растровом карте. Однако он мертв медленно ..