图标到图像 - 透明度问题

发布于 2024-09-24 09:25:27 字数 1034 浏览 2 评论 0原文

我正在尝试在富文本框中构建一个类似于文件列表的树视图。

它应该看起来像一个资源管理器树视图。我的代码能够调整图标大小,但缺少透明度(浅灰色背景而不是透明度)。我需要在这里改变什么?是不是图片格式不对? 有没有更好的方法将图像添加到 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() 不会将其发布为透明图像。

有什么想法为什么以及我能做什么来解决它吗?我需要切换到不同的文本框控件吗?

I'm trying to build a treeview like file list in a richtext box.

It should look like an explorer treeview. My code is able to get an resize the icon, but the transparency is missing (light gray background instead of transparency). What do I need to change here? Is the Image format wrong?
Is there a better way to add an image to a 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();

Example:

alt text

Edit:

I've figured out that the image is transparent, but using Clipboard.SetImage() doesn't publish it as transparent image.

Any ideas why and what can I do to fix it? Do I need to switch to a differn textbox control?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

穿透光 2024-10-01 09:25:27

我在图形方面有一些运气。

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

这将绘制具有透明度的图标到位图。

I've had some luck going through Graphics.

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

This draws the icon with transparency to the Bitmap.

烟花易冷人易散 2024-10-01 09:25:27

尝试

img.MakeTransparent();

构建完成后

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

Try

img.MakeTransparent();

after you contruct it.

Note that this will change your PixelFormat to Format32bppArgb.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文