[英]How to keep the image Drawn in PictureBox
嘿大家,這是C#.Net的新人。
我正在嘗試制作像Paint這樣的應用程序,當然要簡單得多,而且我被卡住了。
問題是這個。
在pictureBox中,我在PictureBox上繪制網格線,之后我正在讀取.map(一個Mapper3文件)並想要繪制到網格線上,但是當我繪制地圖時,網格線消失了。
我認為問題是因為PictureBox Image在我繪制地圖時變為null。 我怎么能克服這一點,有什么竅門嗎?
感謝你們從現在開始的回復,對不起我的英語不好......
我最誠摯的問候...
你使用winforms嗎? 如果是的話,你實際上不需要工作區的圖片框。 我認為更合適的是表單或面板上的Graphics類。 由於形式重繪圓圈,您丟失了線條,將您的繪圖代碼放入表單繪制處理程序,圖片將在需要時重新繪制。 在某些情況下,您可能需要手動觸發重繪圈,為此您應該使用表單的Invalidate方法。
例如,將此代碼添加到繪制處理程序:
private void Form1_Paint(object sender, PaintEventArgs e)
{
// Drawing vertical lines
for (int x = 5; x < this.ClientRectangle.Width; x+=5)
{
e.Graphics.DrawLine(Pens.Gray, new Point(x, 0), new Point(x, this.ClientRectangle.Height));
}
// Drawing horisontal lines
for (int y = 5; y < this.ClientRectangle.Width; y += 5)
{
e.Graphics.DrawLine(Pens.Gray, new Point(0, y), new Point(this.ClientRectangle.Width,y));
}
}
您也可以通過這種方式在按鈕單擊處理程序中使用Graphics:
Graphics g = Graphics.FromHwnd(this.Handle);
g.FillEllipse(Brushes.Beige, new Rectangle(10, 10, 10, 10));
但是在這種情況下,你所繪制的所有內容都將在表單的重繪圓圈中被刪除,你將不得不在表單繪制處理程序中重復它
[編輯]好的,例如你的表單上有pictureBox1,你可以通過這種方式借助Bitmap類輕松地繪制它:
// Draw into bitmap
Bitmap bmp = new Bitmap(150, 150);
Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(Brushes.Green, new Rectangle(25, 75, 10, 30));
// Set bitmap into picture box
pictureBox1.Image = bmp;
在這種情況下,你不需要重繪你的畫作,圖片框會為你做。 如果您希望從圖片框下方顯示繪畫,請不要忘記將BackColor
ot圖片框設置為Transparent
。
每當paint事件引發時,您都必須繪制包括網格線在內的所有內容,如果您關注性能,則可以檢測到剪切區域並僅繪制該部分。
祝好運。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.