RibbonX kennt .NET Images


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).

Skip to main content