开发者

Merging Shapes and Attaching Partial Drag/Drop in WPF

开发者 https://www.devze.com 2023-02-04 23:06 出处:网络
I would like to draw two shapes in WPF and merge them together.Then, I\'d like to attach a drag/drop even开发者_Go百科t to ONE of the original shapes.

I would like to draw two shapes in WPF and merge them together. Then, I'd like to attach a drag/drop even开发者_Go百科t to ONE of the original shapes.

So basically, you can only drag if you click on a certain part of the shape, but it will drag the entire shape with you.

Here is some code:

// Set up some basic properties for the two ellipses
Point centerPoint = new Point(100, 100);
SolidColorBrush ellipseColor_1 = new SolidColorBrush(Color.FromArgb(255, 0, 0, 255));
double width_1 = 10; double height_1 = 10;
SolidColorBrush ellipseColor_2 = new SolidColorBrush(Color.FromArgb(50, 255, 0, 0));
double width_2 = 200; double height_2 = 200;

// Create the first ellipse: A small blue dot
// Then position it in the correct location (centerPoint)
Ellipse ellipse_1 = new Ellipse() { Fill = ellipseColor_1, Width = width_1, Height = height_1 };
ellipse_1.RenderTransform = new TranslateTransform(point.X - width_1 / 2, point.Y - height_1 / 2);

// Create the second ellipse: A large red, semi-transparent circle
// Then position it in the correct location (centerPoint)
Ellipse ellipse_2 = new Ellipse() { Fill = ellipseColor_2, Width = width_2, Height = height_2 };
ellipse_2.RenderTransform = new TranslateTransform(point.X - width_2 / 2, point.Y - height_2 / 2);

// ???
// How should I merge these?
// ???

// Now apply drag drop behavior to ONLY ellipse_1
MouseDragElementBehavior dragBehavior = new MouseDragElementBehavior();
dragBehavior.Attach(ellipse_1);  // This may change depending on the above

// ...
// Add new element to canvas

This code creates two circles (a big one and a small one). I would like to only be able to drag if the small one is clicked, but I'd like to have them attached so they'll move together without having to manually add code that will take care of this.


If you put them both in a Grid (or Canvas, StackPanel, etc.), and set the drag behavior on the panel, they will be "merged". If you set IsHitTestVisible to false on ellipse_2, it won't respond to any mouse events, so effectively it won't be draggable.

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号