1

私の Xojo アプリケーションでは、Canvas オブジェクトを動的に作成します。これらを特定の順序で積み重ねたい。ただし、イメージを思いどおりにスタックすることはできないようです。画像が表示される順序を指定するにはどうすればよいですか?

4

3 に答える 3

1

Window で宣言された Control 配列があること、つまり Window に Canvas コントロールがあり、その Index が 0 に設定されていることを意味していると思います。そして、new演算子を使用して新しい Canvas Control インスタンスを追加します。

これらのコントロールが配列に表示される順序は、それらが描画される順序 (またはその逆) でもあると思います。しかし、それはあなたには明らかなはずです。ですから、あなたはさらに困難を引き起こす何かをしていると思いますが、まだそれを伝えていません。

于 2016-10-04T11:49:23.310 に答える
1

ゲームには遅れていますが、単一のCanvas.BackgroundのObjects of a PictureGroup2Dオブジェクトに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 を持ち、他の場所で使用されていることです。

再読み込み時に、イベントに応答するために別のキャンバスが必要な場合(たとえば、それらがカスタム コントロールである場合、これは機能しない可能性があります)

于 2016-10-28T15:05:26.177 に答える
1

キャンバス オブジェクトをスタック/タイル表示しようとしている場合は、canvas.paint イベント内でさまざまな画像を操作する方がよい場合があります。コントロールを積み重ねると、ほとんどの場合、パフォーマンスの低下とちらつきが保証されます (特に Windows の場合)。

あなたがしていることには正当な理由があるかもしれませんが、それは Xojo の最善の方法ではないと思います。これ以上の情報がなければ、なんとも言えません。

古いアニメーションが行われたと言うキャンバス オブジェクトについて考えてみてください。背景を描いてから、次のレイヤーのオブジェクトを描き、次に次のレイヤーを描きます。これは非常に高速です (挿入プロンプトなどでこれを行う本格的なワープロを作成しました)。

于 2016-10-04T14:02:20.207 に答える