J'ai un Format32bppArgb
backbuffer, où je dessine quelques lignes:Dessiner Bitmap avec canal alpha
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);
}
Maintenant, je veux copier bitmap
en cas Paint
. Je le fais comme ceci:
void Form1Paint(object sender, PaintEventArgs e)
{
e.Graphics.DrawImageUnscaled(bitmap, 0, 0);
}
hovewer, les pixels et applique le canal alpha DrawImageUnscaled
copies, donc pixels avec alpha == 0 n'aura aucun effet. Mais j'ai besoin d'une copie d'octets brute, donc les pixels avec alpha == 0 sont également copiés. Donc, le résultat de ces opérations devrait être que e.Graphics
contient l'octet exact de la bitmap
. Comment faire ça?
Résumé: Lors de l'élaboration d'un bitmap, je ne veux pas appliquer le canal alpha, je veux simplement copier les pixels.
Merci beaucoup, c'était très rapide! :-) Ca marche tout simplement bien ... – Paya