在我的Xojo应用程序中,我动态地创建画布对象。我要把它们按特定的顺序叠起来。然而,我似乎无法以我想要的方式将图像堆叠起来。如何指定图像的显示顺序?
发布于 2016-10-04 14:02:20
如果您试图堆栈/平铺画布对象,那么您最好尝试在canvas.paint事件中处理各种图像。控件的堆叠几乎总是会保证糟糕的性能和闪烁(特别是在Windows中)。
做您正在做的事情可能有合理的理由,但我怀疑这不是最好的Xojo方式。如果没有更多的信息,很难说。
想想画布对象在说,旧的动画已经完成。你画背景,然后在下一层画物体,然后画下一层,以此类推。这非常快(我们创建了一个功能齐全的字处理器,它使用插入提示符等等)。
发布于 2016-10-04 11:49:23
我假设您的意思是在窗口中声明了一个Control数组,即窗口中有一个画布控件,其索引设置为0。并使用new运算符添加新的画布控件实例。
我认为,这些控件在数组中出现的顺序也是它们被绘制的顺序(或相反)。但我想这对你来说应该是显而易见的。所以我想你正在做更多导致你困难的事情,但你还没有沟通。
发布于 2016-10-28 15:05:26
游戏后期,但是您可以通过将图像作为pixmapShapes插入到Group2D对象中,将它们插入到单个图片的Objects中,从而更好地控制图像。一个例子可能看起来是:
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,而不是顶部,在其他任何地方都使用。
重新阅读时,如果您必须有单独的画布来响应事件(例如,它们是自定义控件,这可能是不可行的)。
https://stackoverflow.com/questions/39840388
复制相似问题