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

     

  • 相关阅读:
    C++语法注意点
    T4+VSIX 打造Visual Studio 2010 中的Entity代码生成自定义工具
    如何构建安全的.net web应用系统
    在VS2010项目中引用Lib静态库(以Openssl为例)
    通过Handler实现ASP.NET WebForm自定义控件局部刷新
    一个简单的AOP框架学习
    sql 学习
    SQL Server 2005新特性之使用with关键字
    Memcache的资料
    Net通用基础框架学习
  • 原文地址:https://www.cnblogs.com/w2011/p/3747203.html
Copyright © 2020-2023  润新知