c# - para - como usar bitmap
¿Cómo llene un mapa de bits con un color sólido? (8)
Depende de lo que intente lograr, pero normalmente usaría GDI + al obtener un objeto gráfico y luego dibujarlo:
Graphics g = Graphics.FromImage(bitmap);
Es realmente un gran tema, aquí hay algunos tutoriales para principiantes: Tutoriales de GDI +
Aquí hay un fragmento del tutorial sobre cómo dibujar un rectángulo con un relleno de degradado.
Rectangle rect = new Rectangle(50, 30, 100, 100);
LinearGradientBrush lBrush = new LinearGradientBrush(rect, Color.Red, Color.Yellow, LinearGradientMode.BackwardDiagonal);
g.FillRectangle(lBrush, rect);
Necesito crear un mapa de bits de 24 bits (resolución 100x100 píxeles) usando un color RGB único y guardar la imagen generada en el disco. Actualmente uso la función SetPixel
, pero es extremadamente lenta.
Bitmap Bmp = new Bitmap(width, height);
//...
//...
Bmp.SetPixel(x,y,Color.FromARGB(redvalue, greenvalue, bluevalue));
¿Hay un método más rápido que SetPixel
? Gracias por adelantado.
Puede usar LockBits para acelerar la escritura de los píxeles (acceso de puntero en lugar de método por píxel).
Sugiero ver la biblioteca de GD.
Estoy bastante seguro de que hay una biblioteca de CA. http://www.boutell.com/gd/
Tienes muchas opciones aquí :-)
Una alternativa al uso de GDI + es usar WPF (ver RenderTargetBitmap.Render ).
También vea esta pregunta .
siempre Trabajar con regiones ( rectángulo ) es mucho más rápido que usar píxeles individuales .
Esto debería hacer lo que usted necesita. Llena todo el mapa de bits con el color especificado.
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);
}
Bitmap bmp = new Bitmap(width, height);
Graphics g = Graphics.FromImage(bmp);
g.Clear(Color.Green);
Creación de objetos de mapa de bits bmp de Tamaño s (alto, ancho) y Color c.
bmp=CreateBmp( c , s );
Ahora método CreateBmp que devuelve mapa de bits:
Bitmap CreateBmp(Color c, Size s)
{
Bitmap temp =new Bitmap(1,1);
temp.SetPixel(1,1,c);
return new Bitmap(temp, s);
}