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。
重读后,如果您必须有单独的画布来响应事件(例如,它们是自定义控件,这可能不可行)
在我的 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。
重读后,如果您必须有单独的画布来响应事件(例如,它们是自定义控件,这可能不可行)