メインウィンドウ内にキャンバスコントロールがあり、ボタンをクリックするとキャンバスに画像が追加されます。WPFの設定でキャンバスに子画像を追加するC#
これらの画像が追加されたら、これらをドラッグできるようにする必要があります。これはmouseMoveなどでxamlを使って追加できますが、ClickイベントハンドラはC#で行われるため、 C#でなどドラッグするXAMLを使用して
- ダイナミック加えるイメージのための理想的ではありませんが、/
<!-- see below for drag functionality -->
<!--
//these are the xaml settings
//MouseLeftButtonDown = "shape_MouseLeftButtonDown"
//MouseLeftButtonUp = "shape_MouseLeftButtonUp"
//MouseMove = "shape_MouseMove"
-->
<Rectangle x:Name="semiTrailer" Fill="Red" Height="100" Stroke="Black" Width="319" HorizontalAlignment="Left" VerticalAlignment="Bottom" Canvas.Left="48" Canvas.Top="220" MouseLeftButtonDown="shape_MouseLeftButtonDown" MouseLeftButtonUp="shape_MouseLeftButtonUp" MouseMove="shape_MouseMove"/>
クリックハンドラを形作る - 動きを追加する方法を、ここでの設定
をクリックしてくださいドラッグ機能を行うためにのprivate void addSemiOnly_Click(object sender, RoutedEventArgs e)
{
try {
Image img;
img = new Image();
img.Source = new BitmapImage(new Uri(@"/NexansOlexProcessTools;component/Images/canvasImages/BTrailerOnlyTypeA.png", UriKind.Relative));
//these are the xaml settings
//MouseLeftButtonDown = "shape_MouseLeftButtonDown"
//MouseLeftButtonUp = "shape_MouseLeftButtonUp"
//MouseMove = "shape_MouseMove"
//sets height works!
img.Height = 60;
//how to also add
//these are the xaml settings
//MouseLeftButtonDown = "shape_MouseLeftButtonDown"
//MouseLeftButtonUp = "shape_MouseLeftButtonUp"
//MouseMove = "shape_MouseMove"
LayoutRoot.Children.Add(img);
}
catch (Exception drawError)
{
}
}
機能 - それは、ボタンのクリックハンドラ内部の作業を手に入れたXAMLの作品はキャンバスの項目に
private void shape_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
source = (UIElement)sender;
Mouse.Capture(source);
captured = true;
x_shape = Canvas.GetLeft(source);
x_canvas = e.GetPosition(LayoutRoot).X;
y_shape = Canvas.GetTop(source);
y_canvas = e.GetPosition(LayoutRoot).Y;
}
private void shape_MouseMove(object sender, MouseEventArgs e)
{
if (captured)
{
double x = e.GetPosition(LayoutRoot).X;
double y = e.GetPosition(LayoutRoot).Y;
x_shape += x - x_canvas;
Canvas.SetLeft(source, x_shape);
x_canvas = x;
y_shape += y - y_canvas;
Canvas.SetTop(source, y_shape);
y_canvas = y;
}
}
private void shape_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
Mouse.Capture(null);
captured = false;
}
img.MouseMove + =新しいMouseEventHandler(shape_MouseMove); img.MouseLeftButtonDown + =新しいMouseButtonEventHandler(shape_MouseLeftButtonDown); img.MouseLeftButtonUp + =新しいMouseButtonEventHandler(shape_MouseLeftButtonUp);イベントをキャプチャしないでドラッグを有効にしない – BENN1TH