• 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);

  • 相关阅读:
    CF575A Fibonotci [线段树+矩阵快速幂]
    P3768 简单的数学题 [杜教筛,莫比乌斯反演]
    2-SAT 学习笔记
    CF776D The Door Problem [2sat]
    KD-Tree 学习笔记
    Mybatis入门笔记(2)——基于代理Dao实现CRUD
    Mybatis入门笔记(1)——基于原始dao实现CRUD
    mybatis入门看这一篇就够了
    使用JDBC程序的问题总结
    关于递归你知道多少?
  • 原文地址:https://www.cnblogs.com/DoNetCShap/p/10274794.html
Copyright © 2020-2023  润新知