Порядок наложения изображений Xojo

В моем приложении Xojo я динамически создаю объекты Canvas. Я хочу, чтобы они складывались в определенном порядке. Тем не менее, я не могу заставить изображения складываться так, как я хочу. Как указать порядок отображения изображений?


person Floyd Resler    schedule 03.10.2016    source источник


Ответы (3)


Если вы пытаетесь складывать объекты холста в стопку/плитку, вам может быть лучше попытаться работать с различными изображениями внутри события canvas.paint. Наложение элементов управления почти всегда гарантирует низкую производительность и мерцание (особенно в Windows).

Могут быть веские причины делать то, что вы делаете, но я подозреваю, что это не лучший способ Xojo. Без дополнительной информации трудно сказать.

Подумайте об объекте холста, когда говорят, что старые анимации были сделаны. Вы рисуете фон, затем вы рисуете объекты на следующем слое, а затем на следующем слое и так далее. Это удивительно быстро (мы создали полноценный текстовый процессор, который делает это с приглашением на вставку и т. д.).

person BKeeney Software    schedule 04.10.2016

Я предполагаю, что вы имеете в виду, что у вас есть массив Control, объявленный в окне, то есть у вас есть элемент управления Canvas в окне с его индексом, установленным на 0. И вы добавляете новые экземпляры элемента управления Canvas с помощью оператора new.

Я считаю, что порядок, в котором эти элементы управления появляются в массиве, также является порядком (или его обратным), в котором они рисуются. Но это должно быть очевидно для вас, я думаю. Итак, я предполагаю, что вы делаете что-то еще, что вызывает у вас трудности, но вы еще не сообщили об этом.

person Thomas Tempelmann    schedule 04.10.2016
comment
Вы правы в том, как я создаю их с новым оператором. На самом деле это два разных массива элементов управления. Я попытался перенести массив изображений, который я хочу отображать сверху, на передний план в оконном редакторе, но он все еще не работает. - person Floyd Resler; 04.10.2016

Уже поздно, но вы можете лучше контролировать свои изображения, вставив их как pixmapShapes в объект Group2D в Objects элемента < strong>Изображение в одном 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 в центре объекта, а не наверху, что используется везде.

После повторного прочтения, если вы должны иметь отдельные холсты для реагирования на события (например, это настраиваемые элементы управления, это может оказаться неработоспособным)

person VaughnSC    schedule 28.10.2016