Значок к изображению - проблема прозрачности - PullRequest
5 голосов
/ 21 сентября 2010

Я пытаюсь построить древовидный список, подобный списку файлов, в поле 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

Edit:

Я выяснил, что изображение прозрачное, но с помощью Clipboard.SetImage () не публикует его как прозрачное изображение.

Есть идеи, почему и что я могу сделать, чтобы это исправить? Нужно ли переключаться на другой элемент управления текстовым полем?

Ответы [ 2 ]

2 голосов
/ 07 октября 2010

Мне повезло с графикой.

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

Это рисует иконку с прозрачностью в растровом изображении.

0 голосов
/ 21 сентября 2010

Попробуйте

img.MakeTransparent();

после того, как вы его построите.

Обратите внимание, что это изменит ваш PixelFormat на Format32bppArgb.

...