Сохранение альфа-канала на кнопках на панели инструментов Outlook - PullRequest
0 голосов
/ 28 августа 2009

Я разрабатываю надстройку COM с использованием VB.NET в Visual Studio 2008 Pro для Outlook 2003, и у меня возникают проблемы с назначением изображений для пользовательских кнопок панели инструментов.

Короче говоря, мне нужно преобразовать тип Icon в тип stdole.IPictureDisp, чтобы я мог назначить своим кнопкам изображение.

Изображение отображается, но оно теряет альфа-канал, и фон перестает быть прозрачным. Я могу убедиться, что перед преобразованием в объект IPictureDisp свойство PixelFormat имеет значение Format32bppArgb (2498570). Я использую метод кодирования, предложенный здесь: http://msdn.microsoft.com/en-us/library/ms268747%28VS.80%29.aspx.

Для пользователей C # эта ссылка blogs.msdn.com/andreww/archive/2007/10/10/preserving-the-alpha-channel-when-converting-images.aspx (извините, я новичок и не могу оставлять сообщения несколько ссылок! (тупое правило, кстати) показывает, как изменить IPictureDisp по одному пикселю за раз и восстановить прозрачность, но я не могу найти аналогичные функции в VB.NET ...

Буду признателен за любые советы по этому поводу. Благодаря.

1 Ответ

0 голосов
/ 31 августа 2009

Если вы прочитаете до конца статьи, автор заметит в одном из комментариев, что API командных панелей не поддерживает альфа-каналы на изображениях. Конечно, вы можете немного обмануть, если вы нарисуете свое изображение на растровом изображении, которое соответствует фону панели инструментов, и назначите это составное изображение кнопке панели инструментов, у вас будет изображение панели инструментов, которое «выглядит» прозрачным.

...