我需要使用独特的RGB颜色创建一个24位位图(分辨率为100x100像素),并将生成的图像保存到磁盘。我目前使用SetPixel
函数,但速度非常慢。
Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));
是否有比SetPixel
更快的方法?提前谢谢。
答案 0 :(得分:51)
这应该做你需要的。它将使用指定的颜色填充整个位图。
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);
}
答案 1 :(得分:20)
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Green);
答案 2 :(得分:6)
这取决于你想要完成什么,但通常你会通过获取图形对象然后绘制它来使用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);
答案 3 :(得分:3)
您可以使用LockBits来加速写入像素(指针访问而不是每个像素的方法调用)。
答案 4 :(得分:2)
答案 5 :(得分:2)
始终使用 区域 (矩形)比使用单个像素快得多。
答案 6 :(得分:1)
创建尺寸s(高度,宽度)和颜色c。
的位图对象bmpbmp=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);
}
答案 7 :(得分:0)
我建议查看GD库。
我很确定有一个c#库。 http://www.boutell.com/gd/