C# 实现完整功能的截图控件(1)-实现绘图工具栏控件
C# 实现完整功能的截图控件(1)-实现绘图工具栏控件
1、 UserControl设置Region和绘制代码:
protected override void OnPaint(PaintEventArgs e) { base.OnPaint(e); Graphics g = e.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; using (GraphicsPath path = GraphicsPathHelper.CreatePath( ClientRectangle, 8, RoundStyle.All, false)) { using (SolidBrush brush = new SolidBrush(ColorTable.BackColorNormal)) { g.FillPath(brush, path); } using (Pen pen = new Pen(ColorTable.BorderColor)) { g.DrawPath(pen, path); using (GraphicsPath innerPath = GraphicsPathHelper.CreatePath( ClientRectangle, 8, RoundStyle.All, true)) { g.DrawPath(pen, innerPath); } } } } private void SetRegion() { using (GraphicsPath path = GraphicsPathHelper.CreatePath( ClientRectangle, 8, RoundStyle.All, false)) { if (base.Region != null) { base.Region.Dispose(); } base.Region = new Region(path); } } 2、 ToolStripRendererEx重绘代码: protected override void OnRenderToolStripBackground( ToolStripRenderEventArgs e) { Graphics g = e.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; LinearGradientMode mode = e.ToolStrip.Orientation == Orientation.Horizontal ? LinearGradientMode.Vertical : LinearGradientMode.Horizontal; RenderBackgroundInternal( g, e.AffectedBounds, ColorTable.BackColorHover, ColorTable.BorderColor, ColorTable.BackColorNormal, RoundStyle.All, false, true, mode); } protected override void OnRenderButtonBackground( ToolStripItemRenderEventArgs e) { ToolStripButton item = e.Item as ToolStripButton; if (item != null) { LinearGradientMode mode = e.ToolStrip.Orientation == Orientation.Horizontal ? LinearGradientMode.Vertical : LinearGradientMode.Horizontal; Graphics g = e.Graphics; g.SmoothingMode = SmoothingMode.AntiAlias; Rectangle bounds = new Rectangle(Point.Empty, item.Size); if (item.BackgroundImage != null) { Rectangle clipRect = item.Selected ? item.ContentRectangle : bounds; ControlPaintEx.DrawBackgroundImage( g, item.BackgroundImage, ColorTable.BackColorNormal, item.BackgroundImageLayout, bounds, clipRect); } if (item.CheckState == CheckState.Unchecked) { if (item.Selected) { Color color = ColorTable.BackColorHover; if (item.Pressed) { color = ColorTable.BackColorPressed; } RenderBackgroundInternal( g, bounds, color, ColorTable.BorderColor, ColorTable.BackColorNormal, RoundStyle.All, true, true, mode); return; } else { if (e.ToolStrip is ToolStripOverflow) { using (Brush brush = new SolidBrush(ColorTable.BackColorNormal)) { g.FillRectangle(brush, bounds); } return; } } } else { Color color = ControlPaint.Light(ColorTable.BackColorHover); if (item.Selected) { color = ColorTable.BackColorHover; } if (item.Pressed) { color = ColorTable.BackColorPressed; } RenderBackgroundInternal( e.Graphics, bounds, color, ColorTable.BorderColor, ColorTable.BackColorNormal, RoundStyle.All, true, true, mode); return; } } base.OnRenderButtonBackground(e); } protected override void OnRenderSeparator( ToolStripSeparatorRenderEventArgs e) { Rectangle rect = e.Item.ContentRectangle; if (e.ToolStrip is ToolStripDropDown) { if (e.Item.RightToLeft == RightToLeft.Yes) { //rect.X -= OffsetMargin + 4; } else { rect.X += OffsetMargin + 4; } rect.Width -= OffsetMargin + 8; } RenderSeparatorLine( e.Graphics, rect, ColorTable.BackColorPressed, ColorTable.BackColorNormal, SystemColors.ControlLightLight, e.Vertical); }
参考文档:
开发应用-命令模式(C#实现POS收银功能) 详解DevExpress.LookUpEdit控件实现自动搜索定位功能 C# 实现条码图片自动生成功能 C# GridView列头添加CheckBox控件实现全选功能 C#实现DevExpress控件换肤功能 C#实现UDP穿透NAT(UDP打洞)完整版(原) C#开发自定义控件-设置显示工具箱中的图标 C#.Net 上传图片,限制图片大小,检查类型完整版 (C#)RichTextBox控件查找文本演示(功能全) C#切割图片自动填充工具栏按钮图片 C#.NET C/S结构版本自动升级解决方案之升级包实现 隐藏主窗体工具栏的功能按钮(方法二) 禁用或隐藏工具栏上的功能按钮 C#源码-Windows服务管理器,实现安装,卸载,启动和停止服务等功能 C#.NET IP地址工具类WebAPI服务器使用
其它资料:
什么是C/S结构? | C/S框架核心组成部分 | C/S框架-WebService部署图 | C/S框架-权限管理 | C/S结构系统框架 - 5.1旗舰版介绍 | C/S结构系统框架 - 功能介绍 | C/S结构系统框架 - 产品列表 | C/S结构系统框架 - 应用展示(图) | 三层体系架构详解 | C/S架构轻量级快速开发框架 | C/S框架网客户案例 | WebApi快速开发框架 | C/S框架代码生成器 | 用户授权注册软件系统 | 版本自动升级软件 | 数据库底层应用框架 | CSFramework.CMS内容管理系统 | |