我有两个问题:创建图形,并保存为位图
1)我有一个PictureBox
和码头设置为填充。当我调整Form
的大小时,我无法在延伸的PictureBox
部分创建图形。问题是什么?
2)我想将在PictureBox
上创建的图形转换为Bitmap
并将其保存为 * .JPG或* .bmp。我怎样才能做到这一点?
我有两个问题:创建图形,并保存为位图
1)我有一个PictureBox
和码头设置为填充。当我调整Form
的大小时,我无法在延伸的PictureBox
部分创建图形。问题是什么?
2)我想将在PictureBox
上创建的图形转换为Bitmap
并将其保存为 * .JPG或* .bmp。我怎样才能做到这一点?
可以使用handle device得到位图出来的图片框
Graphics g = pictureBox1.CreateGraphics();
Bitmap bitMap = Bitmap.FromHbitmap(g.GetHdc());
bitMap.Save(filePath, System.Drawing.Imaging.ImageFormat.Jpeg);
甚至更好的,如果在PictureBox does`nt修改图像,你可以直接从PictureBox控件
获得图像pictureBox1.Image.Save("path", System.Drawing.Imaging.ImageFormat.Jpeg);
1)您的描述非常含糊。你有例外吗?它显示错误的结果吗?发生什么事?
2)您需要从PictureBox获取图像并使用其Save method。
当Picturebox被调整大小以填充窗体时,看起来它的Image属性保持不变。
所以你需要做的是处理PictureBox.OnSizeChanged事件,然后用下面的代码来调整图像大小:
private void pictureBox1_SizeChanged(object sender, EventArgs e)
{
if ((pictureBox1.Image != null))
{
pictureBox1.Image = new Bitmap(pictureBox1.Image, pictureBox1.Size);
}
}
要保存图像使用:
pictureBox1.Image.Save(filename, System.Drawing.Imaging.ImageFormat.Jpeg);
希望这有帮助!
-1:问题与PictureBox的图像无关。他试图在控件上绘制稳定的东西(PictureBox,Panle甚至Form本身)。 – 2010-05-25 12:52:20
试试这个,工作正常,我...
private void SaveControlImage(Control ctr)
{
try
{
var imagePath = @"C:\Image.png";
Image bmp = new Bitmap(ctr.Width, ctr.Height);
var gg = Graphics.FromImage(bmp);
var rect = ctr.RectangleToScreen(ctr.ClientRectangle);
gg.CopyFromScreen(rect.Location, Point.Empty, ctr.Size);
bmp.Save(imagePath);
Process.Start(imagePath);
}
catch (Exception)
{
//
}
}
我之前尝试过,不幸的是,您保存的图像仅限于控件本身的大小。因此,如果您使用缩放来将巨大的图片放入控件中,那么当您导出图片时,它将是渲染大小而不是实际大小。 – Zorgarath 2016-12-07 07:02:56
1)我没有得到任何Eception和它不显示错误的结果只是Grafhic犯规科瑞。 – 2010-05-21 09:38:06
请尝试对此进行更详细的描述......真的很难理解正在发生的事情。你怎么知道它没有被创建?这只有当你设置码头填充? – mafu 2010-05-21 09:54:20
你知道一个PictureBox有一个MouseClick事件。当我点击图片框时,我想在PictureBox上绘制一个矩形。它是工作,但是当我调整窗体大小的情况下,PictureBox的Dock填充它变成像Form一样的lrger。调整大小后,我无法创建Grafhic的部分变得更大.....我希望你明白我的问题 – 2010-05-21 10:26:44