Как заполнить растровое изображение сплошным цветом?
Мне нужно создать 24-битное растровое изображение (разрешение 100х100 пикселей) с использованием уникального цвета RGB и сохранить сгенерированное изображение на диск. В настоящее время я использую функцию SetPixel
, но она очень медленная.
Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));
Есть ли более быстрый метод, чем SetPixel
? Спасибо заранее.
Ответы
Ответ 1
Это должно делать то, что вам нужно. Он заполнит весь растровый рисунок указанным цветом.
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);
}
Ответ 2
Это зависит от того, что вы пытаетесь выполнить, но обычно вы используете 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
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Green);
Ответ 4
Вы можете использовать LockBits, чтобы ускорить запись пикселей (доступ указателя вместо вызова метода на пиксель).
Ответ 5
Вы избалованы выбором: -)
Альтернативой использованию GDI + является использование WPF (см. RenderTargetBitmap.Render.)
Также см. этот вопрос.
Ответ 6
всегда Работа с регионами (прямоугольник) намного быстрее, чем использование отдельных пикселей.
Ответ 7
Я предлагаю проверить библиотеку GD.
Я уверен, что есть библиотека С#.
http://www.boutell.com/gd/
Ответ 8
Создание растрового объекта bmp размера s (высота, ширина) и цвет 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);
}