У меня есть Format32bppArgb
BackBuffer, где я нарисовать несколько линий:Draw Bitmap с альфа-каналом
var g = Graphics.FromImage(bitmap);
g.Clear(Color.FromArgb(0));
var rnd = new Random();
for (int i = 0; i < 5000; i++) {
int x1 = rnd.Next(ClientRectangle.Left, ClientRectangle.Right);
int y1 = rnd.Next(ClientRectangle.Top, ClientRectangle.Bottom);
int x2 = rnd.Next(ClientRectangle.Left, ClientRectangle.Right);
int y2 = rnd.Next(ClientRectangle.Top, ClientRectangle.Bottom);
Color color = Color.FromArgb(rnd.Next(0, 255), rnd.Next(0, 255), rnd.Next(0, 255));
g.DrawLine(new Pen(color), x1, y1, x2, y2);
}
Теперь я хочу, чтобы скопировать bitmap
в Paint
случае. Я сделать это следующим образом:
void Form1Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImageUnscaled(bitmap, 0, 0);
}
Hovewer, то DrawImageUnscaled
копирует пикселей и применяет альфа-канал, при этом пиксели с альфа == 0 не будет иметь никакого эффекта. Но мне нужна сырая байтовая копия, поэтому пиксели с альфа == 0 также копируются. Поэтому результатом этих операций должно быть то, что e.Graphics
содержит точный байт-экземпляр bitmap
. Как это сделать?
Резюме: При рисовании растрового изображения, я не хочу, чтобы применить альфа-канал, я просто хочу, чтобы скопировать пиксели.
Большое спасибо, это было очень быстро! :-) Он отлично работает, конечно ... – Paya