1
我正在關注一些Java2D教程,現在我正試圖在Canvas上繪製一個簡單的PNG。使用像素在畫布上繪製PNG;式?
我創建了一個BufferedImage
,然後用pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
檢索像素數據。
於是,我打開我的PNG以類似的方式:
spriteImage = ImageIO.read(Shape.class.getResourceAsStream(path));
width = spriteImage .getWidth();
height = spriteImage .getHeight();
spritePixels = spriteImage .getRGB(0, 0, width, height, null, 0, width);
不過,我現在已經從spritePixels
內容寫入pixels
,並很爲難的公式:
假設高度和spriteImage
的寬度將始終小於image
,並且我將始終繪製到位置0,0,我相信我的公式將如下所示:
for (int spriteIndex = 0; spriteIndex < spritePixels.length; spriteIndex ++)
pixels[spriteIndex + offset] = spritePixels[x];
但是,我似乎無法弄清楚如何計算偏移量。這裏有什麼公式?
你需要,如果你在upperleft角落繪製一個偏移? – arynaq 2013-04-28 20:23:29
「偏移量」可能不是正確的詞。它是添加到索引中的值,以便較小的精靈可以插入到較大繪圖區域中的同一個掩碼上。 20x6上的4x4精靈將如下所示: 0→0,1→1,2→2→3→4→20→5→21。我試圖弄清楚這個翻譯的公式。 – 2013-04-28 20:54:00
這是什麼樣的畫布?如果您只想將圖像繪製在另一個圖像上,則不需要轉到像素級別,只需使用其中一個Graphics.drawImage方法即可。 – lbalazscs 2013-04-29 16:05:59