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);
本文来自博客园,作者:jevan,转载请注明原文链接:https://www.cnblogs.com/DoNetCShap/p/10274794.html
分类:
Devpress
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 通过 API 将Deepseek响应流式内容输出到前端