Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > WPF и Silverlight > Переместить объект на другой объект


Автор: dazy 19.4.2009, 20:02
Задача - переместить объект А на объект Б.
делаю так

Код

var transform = TransformToVisual(MyObjectB);
var center = transform.Transform(new Point(0, 0));


Все срабатывает хорошо.  Объект А переносит свой ЛВУ в точку MyObjectB.
Но задача чуть усложняется. Внутри объекта А есть целевая точка MySuperPoint. Нужно переместить объект А на  объект Б таким образом чтобы эти точки совпадали. Т.е. объект А должен сместиться таким образом, чтобы точка MySuperPoint попала на MyObjectB. Где внутри объекта А находится MySuperPoint заранее неизвестно.
Понятно, что нужно взять координаты MySuperPoint относительно ЛВУ объекта А и вставить их на место new Point(0, 0). 

Подскажите как это сделать?

MySuperPoint  -- ellipce
Объект А -- grid


Автор: Partizan 19.4.2009, 20:23
dazy, см. Panel.ZIndex attached property

Автор: dazy 19.4.2009, 21:26
Называется в 3 соснах заблудился 
Вот так все заработало нормально.

Код

// получаем координаты MySuperPoint относительно ObjectA
var generalTransform = MySuperPoint.TransformToVisual(ObjectA);
var po = generalTransform.Transform(new Point(0, 0));

//получаем обратные координаты ObjectB
generalTransform = TransformToVisual(ObjectB);
var fg = generalTransform.Transform(new Point(0, 0));

//Перемещаем ObjectA в ObjectB, с компенсацией по MySuperPoint
Canvas.SetLeft(ObjectA , - fg.X - po.X);
Canvas.SetTop(ObjectA , - fg.Y - po.Y);


Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)