在这里失去理智。过去几天我在 WinForms 中编写了一个 Windows 应用程序的开始......昨天做了 90 度大转弯,出于审美原因不得不切换到 WPF。在转换某些东西时遇到了一些麻烦......即任何与图形相关的东西。在 wpf 版本中,我使用以下 C# 代码在用户单击面板的位置创建了一个黑色圆圈和白色矩形,并显示一个消息框,显示 x 坐标是什么:
Graphics g;
private void panel1_MouseClick(object sender, MouseEventArgs e)
{
SolidBrush s2 = new SolidBrush(Color.Black);
g.FillRectangle(s2, e.X + 3, e.Y + 3, 10, 10);
SolidBrush s = new SolidBrush(Color.White);
g.FillPie(s, e.X + 4, e.Y + 4, 7, 7, 0, 360);
float x_cord = e.X;
MessageBox.Show("X is: " + x_cord.ToString());
}
我尝试通过以下代码在 wfb 中执行此操作:
Graphics g;
private void Canvas_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
{
System.Windows.Point position = e.GetPosition(this);
double pX = position.X;
double pXint = Convert.ToInt32(pX);
MessageBox.Show(pX.ToString());
SolidBrush s2 = new SolidBrush(System.Drawing.Color.Black);
g.FillRectangle(s2, pXint, 5, 10, 10);
}
这可以正确编译并运行,但是当我单击画布时,什么也没有发生!消息框主要用于测试事件是否正在触发,显然不是。这是其中包含画布的窗口的相应 XML:
<Grid>
<Canvas Name="Surface" Height="Auto" Width="Auto" Background="White"> </Canvas>
</Grid>
我在这里做错了什么?实际上,在大多数情况下,我实际上更喜欢 WPF,但某些事情绝对令人讨厌。