我想在一个主要目标是HTML5的PlayN游戏上做像素级的图形。但是,PlayN的Canvas对象不提供对CanvasPixelArray类、putImageData和getImageData函数的访问。我担心对每个像素使用drawPoint会很慢;有没有更好的方法呢?
发布于 2012-05-08 12:32:42
目前还没有针对PlayN的像素操作API。
如果只想以HTML5为目标,可以使用GWT方法创建和操作ImageData对象,然后通过我最近添加的转换图像的机制将这些对象注入到PlayN中。
// use this canvas and context to create as many image data objects as you want
CanvasElement canvas = Document.get().createElement("canvas").<CanvasElement>cast();
Context2d ctx = canvas.getContext2d();
final ImageData data = ctx.createImageData(width, height);
// push those pixels
// use this PlayN image as a factory for creating PlayN images from your ImageData objects
CanvasImage image = PlayN.graphics().createImage(1, 1); // dummy image
Image pixelImage = image.transform(new HtmlBitmapTransformer() {
public ImageElement transform(ImageElement elem) {
// we ignore the element passed in and just create a new CanvasElement
// and draw our bitmap data on it
CanvasElement canvas = Document.get().createElement("canvas").<CanvasElement>cast();
canvas.setWidth(width);
canvas.setHeight(height);
canvas.getContext2d().putImageData(data, 0, 0);
return canvas;
}
});这是一种黑客行为。在某种程度上,我将添加一种机制,用于获取和操作图像的像素数据,其速度与支持它的后端所希望的一样快。
https://stackoverflow.com/questions/10470242
复制相似问题