我有兩個問題:創建圖形,並保存爲位圖
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