2016-10-03 179 views
1

在我的Xojo應用程序中,我動態創建Canvas對象。我希望這些按特定順序堆疊。但是,我似乎無法讓圖像按照我想要的方式堆疊。我怎樣才能指定圖像出現的順序?Xojo圖像堆疊順序

回答

1

如果您嘗試堆疊/平鋪畫布對象,那麼您可能會更好地嘗試處理canvas.paint事件中的各種圖像。控制堆疊幾乎總能保證低劣的性能和閃爍(特別是在Windows中)。

可能有正當理由做你在做什麼,但我懷疑這不是最好的Xojo方式。沒有更多的信息,很難說。

想一想老動畫製作完成後的畫布對象。您繪製背景,然後繪製下一層中的對象,然後繪製下一層,依此類推。這非常快速(我們創建了一個完整的文字處理器,可以通過插入提示來實現這一點)。

1

我假定你的意思是你有一個在窗口中聲明的Control數組,也就是說你有一個窗口中的Canvas控件,它的索引設置爲0並且你使用new操作符來添加新的Canvas控件實例。

我相信這些控件出現在數組中的順序也是它們繪製的順序(或其反向)。但是,這應該是顯而易見的,我想。所以我想你正在做更多的事情會導致你的困難,但你還沒有傳達。

+0

你是如何創建它們與新的運營商正確的。他們實際上是兩個不同的控制陣列。我試圖把我想要在窗口編輯器中顯示的圖像數組放到最前面,但它仍然不起作用。 –

1

太遲了,但你可能會在Group2D對象在圖片對象在一個Canvas.Background把它們插入pixmapShapes有你的圖像進行更多的控制。一個例子可能是這樣的:

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,左用在其他地方。

在重讀,如果你必須有單獨的畫布以響應事件(例如,它們是自定義的控制,這可能不是可行)