RibbonX kennt .NET Images - Office Development is more than VBA - Site Home - MSDN Blogs

RibbonX kennt .NET Images

RibbonX kennt .NET Images

  • Comments 1

Das ist irgendwie total an mir vorbei gegangen. Während in der Beta (VS 2008 Office Integration) bei dynamisch befüllten Ribbon Controls:

 

<dropDown id="MyDropDown" getItemID="getDDItemID" getItemCount="getDDItemCount" getItemLabel="getDDItemLabel" getItemImage="getDDItemImage" onAction="onDDAction"> </dropDown>

immer noch die Images als COM Struktur IPictureDisp übergeben:

 

public stdole.IPictureDisp getDDItemImage(Office.IRibbonControl control, int index) { MemoryStream iconStream = new MemoryStream(...); return ImageConverter.ImageToPictureDisp(Image.FromStream(iconStream)); }

und dann datürlich eine Umwandlungsroutine geschrieben werden mußte, die Image in IPictureDisp konvertiert:

 

internal class ImageConverter : System.Windows.Forms.AxHost { public ImageConverter() : base(string.Empty) { } static public stdole.IPictureDisp ImageToPictureDisp(Image image) { return (stdole.IPictureDisp)GetIPictureDispFromPicture(image); } static public stdole.IPictureDisp IconToPictureDisp(Icon icon) { return ImageToPictureDisp(icon.ToBitmap()); } }

kann jetzt das Image direkt übergeben werden:

 

public Image getDDItemImage(Office.IRibbonControl control, int index) { MemoryStream iconStream = new MemoryStream(...); return Image.FromStream(iconStream); }

Leider geht das nicht mit Icons. Also wer schön freigestellte Icons verwendet, wird nach wie vor die Umwandlungsroutine nutzen müssen (Was nicht wirklich viel mehr Aufwand darstellt).