Както так:
| Код | <Canvas Width="600" Height="800"> <Ellipse Name="clipsa" Stroke="Black" MouseMove="clipsa_MouseMove" StrokeThickness="2" Width="50" Height="75" Canvas.Left="0" Canvas.Top="211" Fill="Blue" Opacity="0.4" MouseLeftButtonDown="clepka_MouseDown" MouseLeftButtonUp="clepka_MouseUp" /> <Ellipse Name="clepka" Stroke="Black" MouseMove="clepka_MouseMove" StrokeThickness="2" Width="50" Height="75" Canvas.Left="113" Canvas.Top="33" Fill="Blue" Opacity="0.4" MouseLeftButtonDown="clepka_MouseDown" MouseLeftButtonUp="clepka_MouseUp" /> <Line Stroke="Black" StrokeThickness="2" Name="palka" X1="{Binding ElementName=clipsa, Path=Canvas.Left.X}" :) Y1="{Binding ElementName=clipsa, Path=Canvas.Left.Y}" :) X2="{Binding ElementName=clepka, Path=Canvas.Left.X}" :) Y2="{Binding ElementName=clepka, Path=Canvas.Left.Y}"/> :) </Canvas>
|
но к сожалению без процедурного кода не обошлось:
| Код | Point clipsa_point; Point clepca_point; bool is_mouse_enter = false; \\захват мыши, public DragElipse() { InitializeComponent(); }
private void clepka_MouseMove(object sender, MouseEventArgs e) { Point pt = e.GetPosition(this); palka.X1 = pt.X; palka.Y1 = pt.Y; Ellipse el = (Ellipse)e.Source; if (is_mouse_enter) { Canvas.SetLeft(el, pt.Y); Canvas.SetRight(el, pt.X); \\больше ни какого способа не придумал, чтоб сдвинуть с места елипс. } else clepca_point = pt; }
private void clipsa_MouseMove(object sender, MouseEventArgs e) { Point pt = e.GetPosition(this); palka.X2 = pt.X; palka.Y2 = pt.Y;
Ellipse el = (Ellipse)e.Source; if (is_mouse_enter) { Canvas.SetLeft(el, pt.Y); Canvas.SetRight(el, pt.X); } else clepca_point = pt; }
private void clepka_MouseDown(object sender, MouseButtonEventArgs e) { is_mouse_enter = true; }
private void clepka_MouseUp(object sender, MouseButtonEventArgs e) { is_mouse_enter = false; }
|
Добавлено через 2 минуты и 35 секунд подскажите как определить нажатость мыши при помощи:
| Код | MouseButtonState.Pressed
|
гдето в книжке видел, а найти немогу. |