2010-04-10 133 views
0

我有一个Format32bppArgb后备缓冲,在那里我画一些线路:绘制位图的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); 
} 

现在我想在Paint事件复制bitmap。我不喜欢这样:

void Form1Paint(object sender, PaintEventArgs e) 
{ 
    e.Graphics.DrawImageUnscaled(bitmap, 0, 0); 
} 

Hovewer,所述DrawImageUnscaled拷贝像素并应用alpha通道,从而像素具有α== 0将不具有任何影响。但我需要原始字节复制,所以alpha = 0的像素也被复制。所以这些操作的结果应该是e.Graphics包含bitmap的确切字节拷贝。怎么做?

摘要:当绘制一个位图,我不想申请alpha通道,我只是想复制的像素。

回答