我有ARGB类型的有效HBITMAP句柄.如何使用GDI +绘制它?
我试过方法:graphics.DrawImage(Bitmap :: FromHBITMAP(m_hBitmap,NULL),0,0); 但它不使用alpha通道.
有些人可以重写以下函数来使用任何优化机制吗?我很确定这不是继续进行逐像素复制的方法.
我读过AlphaBlend或BitBlt,但我不习惯本机代码.
public static Bitmap GetAlphaBitmap(Bitmap srcBitmap)
{
Bitmap result = new Bitmap(srcBitmap.Width, srcBitmap.Height, PixelFormat.Format32bppArgb);
Rectangle bmpBounds = new Rectangle(0, 0, srcBitmap.Width, srcBitmap.Height);
BitmapData srcData = srcBitmap.LockBits(bmpBounds, ImageLockMode.ReadOnly, srcBitmap.PixelFormat);
try
{
for (int y = 0; y <= srcData.Height - 1; y++)
{
for (int x = 0; x <= srcData.Width - 1; x++)
{
Color pixelColor = Color.FromArgb(
Marshal.ReadInt32(srcData.Scan0, (srcData.Stride * y) + (4 * x)));
result.SetPixel(x, y, pixelColor);
}
}
}
finally …Run Code Online (Sandbox Code Playgroud)