3
私はC#とWPFが新しく、ボタンで図形を描画するWPFアプリケーションを作成します。シェイプはキャンバスの周りを動くことができる必要があります。 XAMLで図形を作成すると、図形が移動します。しかし、ボタンで作成したボタンを動かすことはできません。誰も助けてくれませんか?以下は、私が使用しているXAMLとコードです。キャンバスのボタンで作成した図形をWPFでどのように移動できますか?
XAML:
<Window x:Class="All_test.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="350" Width="525">
<Canvas x:Name="canvas" >
<Button Content="Button" Canvas.Left="250" Canvas.Top="260" Width="75" Click="Button_Click_1" />
<Rectangle x:Name="rect"
Height="100" Width ="100" Fill="red"
MouseLeftButtonDown="rect_MouseLeftButtonDown"
MouseLeftButtonUp="rect_MouseLeftButtonUp"
MouseMove="rect_MouseMove"
Canvas.Left="342" Canvas.Top="110" />
</Canvas>
これは私がXAMLで描かれた赤い四角を移動するために使用していたコードです。ボタンで作成された緑色のものについては、どうすればいいですか?
public partial class MainWindow : Window
{
private bool _isRectDragInProg;
public MainWindow()
{
InitializeComponent();
}
private void Button_Click_1(object sender, RoutedEventArgs e)
{
Rectangle rect = new Rectangle();
rect.Fill = new SolidColorBrush(Colors.Green);
rect.Stroke = new SolidColorBrush(Colors.Black);
rect.Height = 100;
rect.Width = 100;
rect.StrokeThickness = 4;
canvas.Children.Add(rect);
InitializeComponent();
}
private void rect_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_isRectDragInProg = true;
rect.CaptureMouse();
}
private void rect_MouseLeftButtonUp(object sender, MouseButtonEventArgs e)
{
_isRectDragInProg = false;
rect.ReleaseMouseCapture();
}
private void rect_MouseMove(object sender, MouseEventArgs e)
{
if (!_isRectDragInProg) return;
// get the position of the mouse relative to the Canvas
var mousePos = e.GetPosition(canvas);
// center the rect on the mouse
double left = mousePos.X - (rect.ActualWidth/2);
double top = mousePos.Y - (rect.ActualHeight/2);
Canvas.SetLeft(rect, left);
Canvas.SetTop(rect, top);
}
は、良い先生ありがとうございます!いくつかの調整が必要でしたが、全体的にこれが私の考えを把握するのに役立ちました。勧告も高く評価されています。 :) – Greengored