图标到图像 - 透明度问题

时间:2010-09-20 22:44:46

标签: c# .net image icons transparency

我正在尝试在richtext框中构建类似树视图的文件列表。

它应该看起来像一个资源管理器树视图。我的代码能够调整图标大小,但缺少透明度(浅灰色背景而不是透明度)。我需要在这里更改什么?图像格式错了吗? 有没有更好的方法将图像添加到richtextbox?

// Get file info
FileInfo f = new FileInfo("myfile.name");
// Get icon for fileinfo
Icon ico = Icon.ExtractAssociatedIcon(f);
// Convert icon to bitmap
Bitmap bm = ico.ToBitmap();
// create new image with desired size
Bitmap img = new Bitmap(16,16,PixelFormat.Frmat32bpRgb);
// Create graphics with desired sized image
Graphics g = Graphics.FormImage(img);
// set interpolation mode
g.InterpolationMode = InterpolationMode.HighQualityBiCubic;
// draw/resize image
g.DrawImage(bm, new Rectangle(0,0,16,16), new Rectangle(0, 0, bm.Width, bm,Height), GraphicalUnit.Pixel);
// Paste to clipboard
Clipboard.SetImage(bm);
// Paste in RichtextBox
rtb.Paste();

示例:

alt text

修改

我发现图像是透明的,但使用Clipboard.SetImage()不会将其发布为透明图像。

任何想法为什么以及我可以做些什么来解决它?我是否需要切换到不同的文本框控件?

2 个答案:

答案 0 :(得分:2)

我有幸通过图形。

Bitmap b = new Bitmap(pbAssetLoaded.Width, pbAssetLoaded.Height);
using (Graphics g = Graphics.FromImage(b))
{
    g.DrawIcon(SystemIcons.Information, 0, 0);
}

这会为Bitmap绘制透明图标。

答案 1 :(得分:0)

尝试

img.MakeTransparent();
合同之后

请注意,这会将您的PixelFormat更改为Format32bppArgb