我需要使用獨特的RGB顏色創建24位位圖(分辨率爲100x100像素),並將生成的圖像保存到磁盤。我目前使用的功能是SetPixel
,但速度非常慢。如何用純色填充位圖?
Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));
有沒有比SetPixel
更快的方法?提前致謝。
我需要使用獨特的RGB顏色創建24位位圖(分辨率爲100x100像素),並將生成的圖像保存到磁盤。我目前使用的功能是SetPixel
,但速度非常慢。如何用純色填充位圖?
Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));
有沒有比SetPixel
更快的方法?提前致謝。
這應該做你所需要的。它將用指定的顏色填充整個位圖。
Bitmap Bmp = new Bitmap(width, height);
using (Graphics gfx = Graphics.FromImage(Bmp))
using (SolidBrush brush = new SolidBrush(Color.FromArgb(redvalue, greenvalue, bluevalue)))
{
gfx.FillRectangle(brush, 0, 0, width, height);
}
這取決於你所要完成的是什麼,但通常你會使用GDI +通過獲取一個圖形對象,然後繪製它:
Graphics g = Graphics.FromImage(bitmap);
它實際上是一個大課題,這裏有一些初學者教程: GDI+ Tutorials
以下是教程中使用漸變填充繪製矩形的代碼片段。
Rectangle rect = new Rectangle(50, 30, 100, 100);
LinearGradientBrush lBrush = new LinearGradientBrush(rect, Color.Red, Color.Yellow, LinearGradientMode.BackwardDiagonal);
g.FillRectangle(lBrush, rect);
1爲GDI +建議。 – Salvador 2009-11-13 01:05:10
你可以使用LockBits用來加快寫像素(指針訪問而不是每個像素方法調用)。
我建議查看GD庫。
我確定有一個c#庫。 http://www.boutell.com/gd/
總是地區(矩形)工作比使用單個像素快得多。
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Green);
你能否提供給我們更多與你的答案有關的細節。謝謝 – Robert 2017-02-20 20:05:00
這是這裏最好的答案。根據我的經驗,當清除整個圖像時,「清除」比調用「FillRectangle」要快。 – 2017-05-19 10:44:33
圖形_ **清除** _方法清除整個圖面並用指定的背景色填充。沒有必要手動填充它,這是_ ** clear ** _方法具有的選項。請看[msdn](https://msdn.microsoft.com/en-us/library/system.drawing.graphics.clear(v = vs.110).aspx)解釋。 – 2017-06-27 04:25:45
創建大小爲s(高度,寬度)和顏色的位圖對象bmp c。
bmp=CreateBmp(c , s);
現在CreateBmp方法,它返回位圖:
Bitmap CreateBmp(Color c, Size s)
{
Bitmap temp =new Bitmap(1,1);
temp.SetPixel(1,1,c);
return new Bitmap(temp, s);
}
非常感謝。 – Salvador 2009-11-13 01:04:35
這顯示瞭如何從另一個位圖製作位圖。 – 2016-03-31 23:36:26
@SanuelJackson所以你低估了這個答案,因爲它回答了OP的實際問題,而不是他的問題的標題? – 2016-04-01 13:39:46