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).
PingBack from http://wordnew.acne-reveiw.info/?p=10310