【发布时间】:2014-08-11 16:32:55
【问题描述】:
我尝试通过鼠标点击在 PictureBox 中绘制一个矩形:
private void MyPictureBoxMouseClick(object sender, MouseEventArgs e)
{
using (Graphics g = MyPictureBox.CreateGraphics())
{
var pen = new Pen(Color.Black, 2);
g.DrawRectangle(pen, e.X, e.Y, 50, 50);
pen.Dispose();
}
}
并且正在绘制矩形。但是当我将鼠标移到 PictureBox 之外时,所有矩形都消失了。如何避免?
更新
我添加了一个 Paint 事件:
private List<Rectangle> Rectangles { set; get; }
private void MyPictureBoxPaint(object sender, PaintEventArgs e)
{
using (Graphics g = MyPictureBox.CreateGraphics())
{
var pen = new Pen(Color.Black, 2);
foreach (var rect in Rectangles)
{
g.DrawRectangle(pen, rect);
}
pen.Dispose();
}
}
private void MyPictureBoxMouseClick(object sender, MouseEventArgs e)
{
Rectangles.Add(new Rectangle(e.X, e.Y, 50, 50));
MyPictureBox.Refresh();
}
但是现在没有绘制矩形。
更新
哦,这是我的错。
g.DrawRectangle(pen, rect); -> e.Graphics.DrawRectangle(pen, rect);
【问题讨论】:
-
您能否更具体地了解消失的矩形?
-
您需要将您的图元存储在一个列表中,然后从列表中绘制到图片框。目前,它们在图片框的下一次重绘时会丢失。
-
您是否尝试挂接到
Draw事件?我认为你需要在那里这样做;) -
当您编辑您的问题时,请通过评论通知回答者,否则他们不会看到您的问题已更新。
标签: c# winforms picturebox