c# – 如何在任务栏缩略图上创建一个区域在Windows 7中显示为透明?

我正在开发一个利用
Windows 7(和Vista)任务栏功能的程序.现在我有一个自定义位图,将显示在任务栏缩略图中.位图以编程方式创建并成功显示.我遇到的唯一“问题”是想在该图像中使用透明,这应该在缩略图中显示透明.但没有任何成功,导致标准的浅灰色.

我已经看到证据表明程序在图像中成功透明:

> http://blog.miranda.or.at/wp-content/uploads/2010/05/taskbar.png
> http://www.addictivetips.com/wp-content/uploads/2010/04/TaskbarRSS.png
> http://www.addictivetips.com/wp-content/uploads/2009/10/Thumbnail1.png

现在是我的问题:如何在我的缩略图中透明?

我将使用Graphics类填充图像,因此允许任何操作.
我应该提一下,我使用Windows® API Code Pack,它使用GetHbitmap
将图像设置为缩略图.

编辑:
只是为了完成它,这是我正在使用atm的代码:

Bitmap bmp = new Bitmap(197, 119);

Graphics g = Graphics.FromImage(bmp);
g.FillRectangle(new SolidBrush(Color.Red), new Rectangle(0, 0, bmp.Width, bmp.Height));  // Transparent is actually light-gray;
g.TextRenderingHint = TextRenderingHint.AntiAliasGridFit;
g.DrawString("Information:", fontHeader, brush, new PointF(5, 5));

bmp.MakeTransparent(Color.Red);
return bmp;

最佳答案 你的Bitmap是什么像素格式?如果它没有Alpha通道,您将无法在图像中存储透明度信息.

以下是如何使用Alpha通道创建位图并默认使其透明:

Bitmap image = new Bitmap(width, height, PixelFormat.Format32bppArgb);
using(Graphics graphics = Graphics.FromImage(image))
{
    graphics.Clear(Color.Transparent);
    // Draw your stuff
}

然后,您可以绘制任何想要的内容,包括使用Alpha通道的半透明内容.

另请注意,如果您尝试在现有的不透明材料上绘制透明度(比如打孔),则需要更改合成模式:

graphics.CompositingMode = CompositingMode.SourceCopy;

这将使您使用的任何颜色覆盖图像中的颜色而不是与其混合.

点赞