【发布时间】:2020-08-09 11:32:31
【问题描述】:
我正在玩学校的一个画布项目。我玩过一些触发器,我发现它们适用于具有鼠标和键盘事件的绘图功能,但我无法在画布上触发鼠标事件。
我一直在寻找可以与鼠标移动一起使用的东西,因为它是一个拖放绘图项目,我需要鼠标移动。我尝试在GridCanvas_MouseLeftButtonDown 方法中设置断点,但无法触发。
CS 代码
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
GridCanvas.MouseMove += GridCanvas_MouseMove;
GridCanvas.MouseDown += GridCanvas_MouseLeftButtonDown;
GridCanvas.MouseUp += GridCanvas_MouseLeftButtonUp;
KeyDown += new KeyEventHandler(Mainwindow_ColorKeyDown);
}
void Mainwindow_ColorKeyDown(object sender, KeyEventArgs e)
{
switch (e.Key)
{
case Key.B:
{
mySolidColorBrush.Color=Color.FromArgb(0,255,255,255);
}
break;
default:
{
}
break;
}
}
private void GridCanvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
_startingPoint = Mouse.GetPosition(GridCanvas);
}
private void GridCanvas_MouseMove(object sender, MouseEventArgs e)
{
if (!GridCanvas.IsMouseCaptured) { return; }
Point endPoint = e.MouseDevice.GetPosition(GridCanvas);
if (Keyboard.Modifiers == ModifierKeys.None)
{
//draw line
Line myLine = new Line();
myLine.Stroke = mySolidColorBrush;
myLine.X1 = _startingPoint .X;
myLine.Y1 = _startingPoint .Y;
myLine.X2 = endPoint .X;
myLine.Y2 = endPoint .Y;
}
}
private void GridCanvas_MouseLeftButtonUp(object sender, MouseEventArgs e)
{
GridCanvas.ReleaseMouseCapture();
}
private Point _startingPoint ;
private SolidColorBrush mySolidColorBrush = new SolidColorBrush();
}
}
【问题讨论】: