【问题标题】:Visual Studio Images with Ribbons (XML)带功能区的 Visual Studio 图像 (XML)
【发布时间】:2011-08-21 05:12:22
【问题描述】:

我正在制作 Office 2007 插件,并且我正在尝试使用 XML 而不是可视化设计器来自定义功能区,但由于某种原因,我无法使用它来制作图像...您到底需要做什么‽ 我添加了一个名为 Icon1 的资源 png 并尝试了这个:

<?xml version="1.0" encoding="UTF-8"?>
<customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui" onLoad="Ribbon_Load">
      <ribbon startFromScratch="false">
        <tabs>
          <tab id="TabToolss" label="Tools">
            <group id="MyGroup" label="My Group" visible="true">
              <button
                id="Button1"
                image="WordAddIn1.Properties.Resources.Icon1"
                onAction="Button1_Click"
                showImage="true"
                />
            </group>
          </tab>
        </tabs>
      </ribbon>
    </customUI>

不走运……不知道为什么。即使我把完整的文件路径放在那里也不起作用。

我从来没有让它工作过一次,所以也许我只是没有按照它的方式去做......

【问题讨论】:

    标签: c# .net xml visual-studio ribbon


    【解决方案1】:

    非常复杂的解决方案...幸运地找到它here

    首先将 loadImage 属性添加到 CustomUI 选项卡,

    那么为了简化,添加这个内部类

    internal class PictureConverter : AxHost
        {
            private PictureConverter() : 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());
            }
    
            static public Image PictureDispToImage(stdole.IPictureDisp picture)
            {
                return GetPictureFromIPicture(picture);
            }
        }
    

    下一步添加loadImage函数的定义,

    public IPictureDisp Ribbon_LoadImage(string imageName)
            {
                return PictureConverter.ImageToPictureDisp((Bitmap)Resources.ResourceManager.GetObject(imageName));
            }
    

    【讨论】:

    • +1 谢谢,正是我想要的。使用 Wordd-Addin 进行尝试,我觉得那里不需要 PictureConverter - 我可以直接从我的项目资源中成功返回位图。鉴于Converting Bitmaps to IPictureDisp 中的信息,我想知道是否仅在 Outlook-Addins 中需要 PictureConverter。
    • +1 给马克。指向 MarkLator 所引用内容的直接链接是 Loading Images,这是 Mark 提供的链接中的子主题。
    【解决方案2】:

    如果您执行以下代码,它会容易得多:

    <?xml version="1.0" encoding="UTF-8"?> 
    <customUI xmlns="http://schemas.microsoft.com/office/2006/01/customui"onLoad="Ribbon_Load>
     <ribbon startFromScratch="false">
       <tabs>
         <tab id="TabToolss" label="Tools">
          <group id="MyGroup" label="My Group" visible="true">
           <button id="Button1" size="normal" getImage="Icon1"
            onAction="Button1_Click"
            showImage="true"/>
        </group>
      </tab>
     </tabs>
    </ribbon>
    

    在功能区cs中:

    namespace Add_in
    {
    [ComVisible(true)]
    public class MyRibbon : Office.IRibbonExtensibility
    {
        private Office.IRibbonUI ribbon;
    
        public MyRibbon()
        {
    
        }
    
        public Bitmap Icon1(Office.IRibbonControl control)
        {
            return (Bitmap)Properties.Resources.ResourceManager.GetObject("Icon1");
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-25
      • 1970-01-01
      • 2010-09-07
      • 2022-07-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多