我的项目是电路 . 我创造了元素 . 元素是用于连接的图像和节点 . 我有一个quastion,如何使点后跟一个元素(图像) . enter image description here
代码
private void Image_MouseMove(object sender,MouseEventArgs e){if(e.LeftButton == MouseButtonState.Pressed && Keyboard.Modifiers!= ModifierKeys.Shift){var p = e.GetPosition(this); obj.MoveRef(p - mousePress); mousePress = p; }
private void Image_MouseUp(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Released)
{
var img = sender as Image;
img.ReleaseMouseCapture();
}
}
捕获元素
private void Image_MouseDown_1(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
mousePress = e.GetPosition(this);
var img = sender as Image;
obj = img.DataContext as Element;
img.CaptureMouse();
e.Handled = true;
}
}
在画布上创建元素
private void Image_MouseDown(object sender, MouseButtonEventArgs e)
{
if (e.LeftButton == MouseButtonState.Pressed)
{
var url = ((sender as Image).DataContext as Element).DisplayedImageShortUrl;
var elm = new Element { DisplayedImage = url, Pos = new Point(100, 100) };
elements.Add(elm);
double X = elm.Pos.X;
double Y = elm.Pos.Y;
tochk = new Node { A = elm, X = X + 7, Y = Y + 32 };
tochk1 = new Node { A = elm, X = X + 105, Y = Y + 32 };
nodes.Add(tochk);
nodes.Add(tochk1);
}
wpf
<ItemsControl x:Name="ic_nodes" Grid.Column="1">
<ItemsControl.ItemsPanel>
<ItemsPanelTemplate>
<Canvas/>
</ItemsPanelTemplate>
</ItemsControl.ItemsPanel>
<ItemsControl.ItemTemplate>
<DataTemplate>
<Ellipse Width="5" Height="5" Fill="Black" MouseEnter="Ellipse_MouseEnter" MouseLeave="Ellipse_MouseLeave">
<Ellipse.RenderTransform>
<TranslateTransform X="{Binding X}" Y="{Binding Y}"/>
</Ellipse.RenderTransform>
</Ellipse>
</DataTemplate>
</ItemsControl.ItemTemplate>
</ItemsControl>