Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: System.Drawing.Icon -> stdole.IPictureDisp  (Прочитано 8807 раз)
0 Пользователей и 2 Гостей смотрят эту тему.
Alex White
Участник

ua
Offline Offline
Пол: Мужской

« : 04-08-2005 09:59 » 

Есть объект System.Drawing.Icon. И надо привести его к интерфейсу stdole.IPictureDisp.
Пробовал так System.Drawing.Icon -> System.Drawing.Image -> stdole.IPictureDisp, в принципе получилось, однако изображение уже не является иконкой — stdole.IPictureDisp.Type != PICTYPE_ICON. А это критично, иначе прозрачные цвета становятся непрозрачными. Что делать ??

Вообще пишу Add-in для MS Office. Использую Microsoft.Office.Core.CommandBarButton класс (office.dll). И в нем есть свойства IPictureDisp Picture и IPictureDisp Mask. Есть версия, что эту маску и надо как-то юзать чтоб получить прозрачность для иконок... но как ?
Записан
Alex White
Участник

ua
Offline Offline
Пол: Мужской

« Ответ #1 : 05-08-2005 12:38 » 

Вот такую ссылку нашел:
http://support.microsoft.com/default.aspx?scid=kb;en-us;824017
Вот что сделал:
Код:
	CommandBarButton menubtnConfig;

menubtnConfig.Picture = IconConverter.GetIconByName("icn_Config.ico", this.GetType().Assembly);
menubtnConfig.Mask = IconConverter.GetBmpByName("icn_Config.bmp", this.GetType().Assembly);
и
Код:
private class IconConverter : System.Windows.Forms.AxHost
{
private IconConverter() : base(null)
{
}
   
public static stdole.IPictureDisp Convert(System.Drawing.Image image)
{
return (stdole.IPictureDisp)
System.Windows.Forms.AxHost.GetIPictureDispFromPicture(image);
}
public static stdole.IPictureDisp GetIconByName(string name, Assembly curAsm)
{
System.Drawing.Icon icon = new System.Drawing.Icon(curAsm.GetManifestResourceStream(name));
System.Windows.Forms.ImageList iList = new System.Windows.Forms.ImageList();
iList.Images.Add(icon);
return Convert(iList.Images[0]);
}
public static stdole.IPictureDisp GetBmpByName(string name, Assembly curAsm)
{
return Convert(new System.Drawing.Bitmap(curAsm.GetManifestResourceStream(name)));
}
}
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines