簡體   English   中英

如何將繪圖圖形保存到位圖?

[英]How to save drawing Graphics to bitmap?

我想將對圖形所做的更改保存到位圖文件中。 我在pictureBox中有來自相機的圖像,當我單擊鼠標時,我添加了網格並指向圖像(據我所知,在圖像的前面),在此之后,我想從相機中保存帶有img的圖形,但我只img,不繪制網格和點。 我該怎么辦? 我創建圖形是這樣的:

 g = Graphics.FromHwnd(postureImg.Handle);
 SolidBrush brush_Grey = new SolidBrush(Color.Black);
 SolidBrush brush_Gold = new SolidBrush(Color.Gold);                   
 Rectangle rect = new Rectangle(dPoint1, new Size(10, 10));
 g.FillEllipse(brush_Gold, rect);                   

 points[i] = new Point(e.X, e.Y);
       i++;
       if (i >= 2)
       {
        Pen myPen = new Pen(Color.Red);
        myPen.Width = 1;
        g.DrawLine(myPen, points[0].X, points[0].Y, points[1].X, points[1].Y);
        }
        g.Dispose();

下次我做g.DrawLine和g.FillEllipse並有這樣的圖像: 在此處輸入圖片說明 我怎樣才能把這張圖片變成位圖? 謝謝!

好的,有關您在做什么的快速教程。

首先,Graphics對象? 它所做的就是修改您指向的原始圖像/位圖。 在這種情況下,您要修改您的poseImg中包含的原始圖像/位圖。 這就是為什么您不必將圖片“重新導入”到該PictureBox中的原因-因為圖形就地對其進行了修改。

這意味着,之后,您要做的就是將原始圖像/位圖保存到文件中-因此,您真正要問的是:“如何將PictureBox中的位圖保存到文件中?”

在這種情況下,答案很簡單:

postureImg.Image.Save(@"C:\someplace.jpg", ImageFormat.Jpeg);

編輯:啊,我忘了VS用PicBoxes做一些奇怪的事情-它有一個“實際”圖像和一個“顯示”圖像。 您一直在編輯的是“顯示”圖像,它不是永久性的(如果刷新表格,它將消失。)

老實說,如果您從不直接進入圖片框中的圖像,可能會更好。 舉例來說,這里的代碼工作:

Graphics g = Graphics.FromHwnd(pictureBox1.Handle);
SolidBrush brush_Grey = new SolidBrush(Color.Green);
SolidBrush brush_Gold = new SolidBrush(Color.Red);
Rectangle rect = new Rectangle(new Point(100, 100), new Size(10, 10));
g.FillEllipse(brush_Gold, rect);
g.Dispose();
pictureBox1.Image.Save(@"C:\tmpSO1.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

……這是行不通的一個很好的提示,如果您在表單加載時執行此操作,則不會顯示紅色圓圈; 如果由於剪切等原因必須刷新表格,紅色圓圈將消失。

無論如何,這里的代碼可以正常工作:

Bitmap bmp = new Bitmap(pictureBox1.Image);
Graphics g = Graphics.FromImage(bmp);
SolidBrush brush_Grey = new SolidBrush(Color.Green);
SolidBrush brush_Gold = new SolidBrush(Color.Red);
Rectangle rect = new Rectangle(new Point(100, 100), new Size(10, 10));
g.FillEllipse(brush_Gold, rect);
g.Dispose();
pictureBox1.Image = bmp;
pictureBox1.Image.Save(@"C:\tmpSO2.jpg", System.Drawing.Imaging.ImageFormat.Jpeg);

無需就地修改PictureBox,而是從中加載單獨的BMP,然后將其重新加載到其中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM