• Devexpress Ribbon Add Logo


      一直在网上找类似的效果.在Devpexress控件里面的这个是一个Demo的.没法查看源代码.也不知道怎么写的.所以就在网上搜索了半天的.

     终于找到类似的解决办法.

     可以使用重绘制的办法的来解决.

    [DesignerCategory("")]
        [Designer("")]
        public class RibbonLogoHelper : Component
        {
            private Image _Image;
            private RibbonControl _RibbonControl;
    
            public RibbonControl RibbonControl
            {
                get { return _RibbonControl; }
                set
                {
                    if (value == _RibbonControl)
                        return;
                    RibbonControl prevValue = _RibbonControl;
                    _RibbonControl = value;
                    OnRibbonChanged(prevValue, _RibbonControl);
                }
            }
    
            private void OnRibbonChanged(RibbonControl prevValue, RibbonControl ribbonControl)
            {
                if (prevValue != null)
                    prevValue.Paint -= ribbonControl_Paint;
                if (ribbonControl != null)
                {
                    ribbonControl.Paint += ribbonControl_Paint;
                    ribbonControl.Invalidate();
                }
           
            }
    
            void ribbonControl_Paint(object sender, System.Windows.Forms.PaintEventArgs e)
            {
                DrawRibbonLogo(e.Graphics);
            }
    
    
            public Image Image
            {
                get { return _Image; }
                set
                {
                    if (value == _Image)
                        return;
                    _Image = value;
                    OnImageChanged();
                }
            }
    
    
    
            private void OnImageChanged()
            {
                if (RibbonControl != null)
                    RibbonControl.Invalidate();
            }
    
            private void DrawRibbonLogo(Graphics graphics)
            {
                if (Image == null)
                    return;
                RibbonViewInfo ribbonViewInfo = RibbonControl.ViewInfo;
                if (ribbonViewInfo == null)
                    return;
                RibbonPanelViewInfo panelViewInfo = ribbonViewInfo.Panel;
                if (panelViewInfo == null)
                    return;
                Rectangle bounds = panelViewInfo.Bounds;
                int minX = bounds.X;
                RibbonPageGroupViewInfoCollection groups = panelViewInfo.Groups;
                if (groups == null)
                    return;
                if (groups.Count > 0)
                    minX = groups[groups.Count - 1].Bounds.Right;
                if (bounds.Height < Image.Height)
                    return;
                int offset = (bounds.Height - Image.Height) / 2;
                int width = Image.Width + 15;
                bounds.X = bounds.Width - width;
                if (bounds.X < minX)
                    return;
                bounds.Width = width;
                bounds.Y += offset;
                bounds.Height = Image.Height;
                graphics.DrawImage(Image, bounds.Location);
            }
      
        }


    最终达到自己想要效果的.

     

    或者在标题栏上添加类似的Logo

                DevExpress.XtraBars.Ribbon.ViewInfo.RibbonViewInfo ribbonViewInfo = ribbonControl1.ViewInfo;
                if (ribbonViewInfo == null)
                    return;
                DevExpress.XtraBars.Ribbon.ViewInfo.RibbonCaptionViewInfo captionViewInfo = ribbonViewInfo.Caption;
                if (captionViewInfo == null)
                    return;
    
                Rectangle bounds = new Rectangle(captionViewInfo.ContentBounds.X + 120, captionViewInfo.ContentBounds.Y, 
    captionViewInfo.ContentBounds.Width - 22, captionViewInfo.ContentBounds.Height); Image image = DevExpress.Utils.Frames.ApplicationCaption8_1.GetImageLogoEx(LookAndFeel); e.Graphics.DrawImage(image, bounds.Location);

     

  • 相关阅读:
    Homework template (latex)
    Basic skill of searching
    国庆第三次集训: 2012 ACM-ICPC Asia Regional Contest Chengdu Site
    新学期随笔
    暑期集训感想
    暑期集训 DP 篇
    POJ 1195 Mobile Phones 二维树状数组
    51Nod1246 罐子和硬币,不能均分的题
    一维战舰,一道考区间的好题
    51NOD 1268 和为K的组合 搜索水题
  • 原文地址:https://www.cnblogs.com/w2011/p/3747203.html
Copyright © 2020-2023  润新知