Подтвердить что ты не робот

Как заполнить растровое изображение сплошным цветом?

Мне нужно создать 24-битное растровое изображение (разрешение 100х100 пикселей) с использованием уникального цвета RGB и сохранить сгенерированное изображение на диск. В настоящее время я использую функцию SetPixel, но она очень медленная.

Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));

Есть ли более быстрый метод, чем SetPixel? Спасибо заранее.

4b9b3361

Ответ 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);
}