我对用 C# 绘图真的很陌生,而且我使用的是 Windows 窗体而不是 WPF,所以也许我从一开始就做错了......你告诉我......但我想拥有一个临时标记放在 PictureBox 上(在 MouseDown 上),它将跟随鼠标(擦除其之前的绘图,即不留下痕迹),然后在 MouseUp 事件的最终位置绘制。
这是你们可以填写的一些骨架代码:
bool mDown;
Graphics g; // initialized to pictureBox1.CreateGraphics() on Form_Load, though
// I am unsure how that differs from Graphics.FromImage(pictureBox1)
SolidBrush sbGray, sbGreen;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
mDown = true;
// store/push initial drawing
g.FillEllipse(sbGray, e.X - 5, e.Y - 5, 10, 10);
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (mDown)
{
// restore/pop initial drawing, erasing old trail
g.FillEllipse(sbGray, e.X - 5, e.Y - 5, 10, 10);
}
}
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
// restore/pop initial drawing, erasing old trail
g.FillEllipse(sbGreen, e.X - 5, e.Y - 5, 10, 10);
mDown = false;
}
我想有几种方法可以给猫换皮,比如改变鼠标图标,所以这可能不是最好的方法吗?即便如此,我可能需要知道这两个问题的答案——是否有更好的方法,以及如何从 PictureBox 中提取图形(因为这些知识很可能在以后证明是有用的。)
(注意:虽然灰色圆圈会自行消失,但绿色圆圈应该是持久的,并且多个绿色圆圈应该能够同时存在于 PictureBox 中。)