0
我有两个图像要绘制到画布对象中。我从服务器获取这些图像,并在loadHandler调用时获取图像的尺寸(它们具有相同的宽度和高度)并计算画布的尺寸。然后,我绘制每个图像,在画布中计算出的x,y位置。问题是只有一个图像出现在画布上。为什么?用GWT在画布中绘图
下面是代码的一部分:
final Image siImg = new Image();
siImg.setVisible(false);
siImg.setUrl(Constants.URL_PREFIX + siPath);
siImg.addLoadHandler(new LoadHandler() {
@Override
public void onLoad(LoadEvent event) {
int siWidth = siImg.getWidth();
int siHeight = siImg.getHeight();
siImg.removeFromParent();
if (!CategoryTableView.this.dimFromBg) {
CategoryTableView.this.width = siWidth;
CategoryTableView.this.height = siHeight * sSize;
//CategoryTableView.this.setPixelSize(CategoryTableView.this.width, CategoryTableView.this.height);
CategoryTableView.this.canvas.setPixelSize(CategoryTableView.this.width, CategoryTableView.this.height);
CategoryTableView.this.canvas.setCoordinateSpaceHeight(CategoryTableView.this.height);
CategoryTableView.this.canvas.setCoordinateSpaceWidth(CategoryTableView.this.width);
CategoryTableView.this.dimFromBg = true;
}
ImageElement imageElement = (ImageElement) siImg.getElement().cast();
int left = xOff;
int top = yOff + (siHeight * fi);
CategoryTableView.this.context.drawImage(imageElement, left, top);
}
});
RootPanel.get().add(siImg);
好吧,我想我找到它......我必须每次保存上下文的状态。是对的吗? (因为现在的工作!)
好主意缓冲!实际上,我实现了按照我发布的方式工作(没有存储/恢复功能 - 它们与我的假设无关)。但是Erik,如果你不把图像添加到某个地方(这正是RootPanel.get()。add(img)的东西),那么Load处理程序将如何触发! –