我将图像绘制到我的pictureBox中:
pictureBox1.CreateGraphics().DrawImage(myImage, 0, 0);
我绘制了一些矩形:
pictureBox1.CreateGraphics().FillRectangle(Brushes.White, new Rectangle(point1, new Size(10, 10)));
但是我使用pictureBox1.DrawToBitmap(myBitmap,rect)来保存带有矩形的图像, 它只保存pictureBox控件而不用图形和矩形。 如何将图形内容保存到位图? 有我的代码:
//to get an image to pictureBox
private void btnOpen_Click(object sender, EventArgs e)
{
OpenFileDialog ofd = new OpenFileDialog();
if (ofd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Bitmap img = (Bitmap)Image.FromFile(ofd.FileName);
pictureBox1.CreateGraphics().DrawImage(img, new Point(0, 0));
}
}
//this is to draw rectangles
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
pictureBox1.CreateGraphics().FillRectangle(Brushes.White, new Rectangle(e.Location, new Size(10, 10)));
}
//tis is to save graphics to image
private void btnSave_Click(object sender, EventArgs e)
{
pictureBox1.DrawToBitmap(myBitmap,rect)
myBitmap.Save("C:\\test.bmp");
}
答案 0 :(得分:0)
你可以这样做:
Bitmap bmp = new Bitmap(256, 256, gfx);
// now you can save bmp to file on disk
并将其加载回内存:
// here you must load file from disk into bmp
Graphics gfx = Graphics.FromImage(bmp);
虽然bmp
是实际Bitmap
,但我建议将其保存为比BMP
更好的格式。
内存中的位图必须完全栅格化(原始格式的所有像素),以便您可以操作和渲染它们。但是在磁盘上你不需要这种方式的光栅,并且想节省空间,所以通常使用像PNG
这样的格式。对于这个特殊情况,我不推荐JPG
,这对图片来说非常好。你需要的是像我前面所说的那样PNG
的无损编码。