Xojo图像堆叠顺序

时间:2016-10-03 21:03:07

标签: image xojo

在我的Xojo应用程序中,我动态创建Canvas对象。我希望这些按特定顺序堆叠。但是,我似乎无法将图像按照我想要的方式堆叠。如何指定图像的显示顺序?

3 个答案:

答案 0 :(得分:1)

我假设你的意思是你在Window中声明了一个Control数组,即你在Window中有一个Canvas控件,其Index设置为0.你可以使用new添加新的Canvas Control实例操作

我相信这些控件在数组中出现的顺序也是它们被绘制的顺序(或反向)。但我认为这对你来说应该是显而易见的。所以我猜你做了更多会导致你困难的事情,但你还没有传达信息。

答案 1 :(得分:1)

如果您正在尝试堆叠/平铺画布对象,那么您最好尝试在canvas.paint事件中处理各种图像。堆栈控件几乎总能保证性能不佳和闪烁(特别是在Windows中)。

可能有正当理由做你正在做的事情,但我怀疑它不是最好的Xojo方式。没有更多信息,很难说。

想想画布中的对象,说旧的动画已经完成了。绘制背景,然后在下一层中绘制对象,然后绘制下一层,依此类推。这非常快(我们创建了一个完整的文字处理器,可以通过插入提示执行此操作等)。

答案 2 :(得分:1)

游戏后期,但您可以通过在对象中的 Group2D 对象中插入 pixmapShapes 来更好地控制图像一个 Canvas.Background 中的图片。示例可能如下所示:

dim pixmapA as new pixmapShape(pictureA)

dim composite as new group2D //behaves much like an array

composite.append(new pixmapShape(pictureB)) //lacks variable name (see pixmapA)
composite.item(0).rotation=.9 //but still editable if you know its index

composite.append(pixmapA) //on top and still addressable as 'pixmapA'
pixmapA.fill=50 //e.g. changed transparency

//add this group to a picture (lets suppose 'myPicture' exists)
myPicture.objects=composite
myCanvas.Backdrop=myPicture

//or you can paint to graphics
myPicture.graphics.drawObject(composite)

对象2D的唯一问题是它的坐标系在对象的中心有0,0,而不是顶部,左边是其他地方使用的。

重新阅读时,如果您必须有单独的画布来响应事件(例如,它们是自定义控件,这可能不可行)