Xojo 图像堆叠顺序

Xojo Image Stacking Order

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

我假设您的意思是您在 Window 中声明了一个控件数组,即您在 Window 中有一个 Canvas 控件,其索引设置为 0。并且您使用 new 运算符添加新的 Canvas 控件实例。

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

如果您正在尝试 stack/tile canvas 对象,那么您最好尝试在 canvas.paint 事件中处理各种图像。堆叠控件几乎总是会导致性能不佳和闪烁(尤其是在 Windows 中)。

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

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

游戏后期,但您可以通过将图像作为 pixmapShapes 插入到 Group2D 对象中来更好地控制图像单个 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)

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

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