[英]How to draw object in PictureBox c#?
我試圖通過單擊鼠標在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);
是的,您正在繪制圖片框。 當下一個繪制消息到達時,Picturebox會在那時再次重新繪制自身,它將覆蓋您的矩形。
您可能需要在Paint
事件中繪制它以便使矩形保留下來,或者可以在PictureBox.Image
繪制以便將其保留在那里。
為了進行編輯:您需要使用e.Graphics
屬性。 例如下面的代碼對我有用。
private void MyPictureBoxPaint(object sender, PaintEventArgs e)
{
Graphics g = e.Graphics;
using (var pen = new Pen(Color.Black, 2))
{
foreach (var rect in Rectangles)
{
g.DrawRectangle(pen, rect);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.