请教一个winform画半个圆环控件,有点类似仪表盘

Melodramatic_Bitch 2018-08-17 11:12:31
刚刚接触winfrom,要写个自定义的控件,求大佬们帮帮忙,给个总体思路也可以。需求:可以指定圆盘指示的范围,通过传在这个范围的任意参数值,能实时的通过颜色渲染显示。如下图
...全文
782 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
vampire琪宝宝 2018-09-10
  • 打赏
  • 举报
回复
这个不用你自己画,网上有很多这种控件的,直接下载一个,拖到winform界面就能用,最近在用简仪科技的开源控件,里面有chart,也有表盘,如有需要,可留QQ
我是小数位 2018-08-27
  • 打赏
  • 举报
回复
引用 5 楼 CXJ0062008 的回复:
这个简单吧,简单如下
   Graphics g = this.CreateGraphics();
int maxValue = 500;//最大值
int currentValue = 400;//当前值
//计算实际角度
var angle = Convert.ToInt32((180.0 / maxValue * currentValue));


GraphicsPath path = new GraphicsPath();
path.AddPie(50, 50, 200, 200, 180, angle);
g.FillPath(new SolidBrush(Color.Blue), path);
path.Reset();
path.AddPie(75, 75, 150, 150, 180, angle);
g.FillPath(new SolidBrush(this.BackColor), path);
path.Reset();
path.AddArc(50, 50, 200, 200, 180, 180);
path.AddArc(75, 75, 150, 150, 180, 180);
path.CloseFigure();
g.DrawPath(new Pen(Color.Red), path);
文件自己去画,自己可以再优化,加上渐变什么的
文件->文字,当前这只其中一个方案,其他如可以画三个扇形,两个180的,一大一小,一个就是那个角度的,方法很多
我是小数位 2018-08-27
  • 打赏
  • 举报
回复
这个简单吧,简单如下
   Graphics g = this.CreateGraphics();
int maxValue = 500;//最大值
int currentValue = 400;//当前值
//计算实际角度
var angle = Convert.ToInt32((180.0 / maxValue * currentValue));


GraphicsPath path = new GraphicsPath();
path.AddPie(50, 50, 200, 200, 180, angle);
g.FillPath(new SolidBrush(Color.Blue), path);
path.Reset();
path.AddPie(75, 75, 150, 150, 180, angle);
g.FillPath(new SolidBrush(this.BackColor), path);
path.Reset();
path.AddArc(50, 50, 200, 200, 180, 180);
path.AddArc(75, 75, 150, 150, 180, 180);
path.CloseFigure();
g.DrawPath(new Pen(Color.Red), path);
文件自己去画,自己可以再优化,加上渐变什么的
晨易夕 2018-08-17
  • 打赏
  • 举报
回复
可以用WPF嘛,觉得WPF实现简单一些,用Arc类做弧形填充就行了。
望蓝天 2018-08-17
  • 打赏
  • 举报
回复
画图嘛,在自定义控件类中设置字段value值,在public方法中根据传入参数设置字段值,调用invalidate触发OnPaint,在OnPaint中用gdi+画。你这个图我觉得可以看成两个矩形,上面一个矩形中放两个半圆,下一个矩形中drawstring。先画填充大圆,再画填充圆弧,根据字段值分段显示不同颜色的填充圆弧,再画填充小圆,就可以显示圆环。最后在原点drawstring字段值。感觉就行了吧。
丰云 2018-08-17
  • 打赏
  • 举报
回复
百度 dashboard

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧