当前位置: 首页 > news >正文

C# 绘制直线 圆形 矩形(工业上位机)

一、WinForms 工业绘图

适合:设备状态图、工艺流程、实时数据可视化

1、基础绘图(无闪烁)

usingSystem.Drawing;usingSystem.Windows.Forms;publicpartialclassMainForm:Form{publicMainForm(){InitializeComponent();DoubleBuffered=true;// 工业画面必开:防闪烁}protectedoverridevoidOnPaint(PaintEventArgse){base.OnPaint(e);Graphicsg=e.Graphics;// 高质量绘图(工业画面必须)g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;g.TextRenderingHint=System.Drawing.Text.TextRenderingHint.ClearTypeGridFit;// 1. 画直线(管道、连接线)using(PenlinePen=newPen(Color.DodgerBlue,2)){g.DrawLine(linePen,50,50,300,50);}// 2. 画矩形(设备、阀门)using(PenrectPen=newPen(Color.LimeGreen,3)){g.DrawRectangle(rectPen,50,80,200,100);}// 3. 画实心矩形(状态指示)using(SolidBrushbrush=newSolidBrush(Color.Orange)){g.FillRectangle(brush,60,90,180,80);}// 4. 画圆形(泵、电机)using(PencirclePen=newPen(Color.Red,3)){g.DrawEllipse(circlePen,350,80,100,100);}// 5. 画实心圆(指示灯)using(SolidBrushbrush=newSolidBrush(Color.Green)){g.FillEllipse(brush,360,90,80,80);}// 6. 画文字(设备编号)using(Fontfont=newFont("微软雅黑",12,FontStyle.Bold)){g.DrawString("PUMP-01",font,Brushes.White,365,120);}}}

2、工业设备示意图

protectedoverridevoidOnPaint(PaintEventArgse){Graphicsg=e.Graphics;g.SmoothingMode=System.Drawing.Drawing2D.SmoothingMode.AntiAlias;inttankX=50,tankY=50,tankW=200,tankH=300;// 储罐(矩形)g.DrawRectangle(Pens.SteelBlue,tankX,tankY,tankW,tankH);// 液位(动态高度)intliquidHeight=180;g.FillRectangle(Brushes.DeepSkyBlue,tankX+2,tankY+tankH-liquidHeight,tankW-4,liquidHeight);// 管道(直线)g.DrawLine(newPen(Color.DimGray,6),tankX+tankW/2,tankY+tankH,tankX+tankW/2,tankY+tankH+100);// 泵(圆形)g.DrawEllipse(Pens.Red,tankX+tankW/2-40,tankY+tankH+120,80,80);g.FillEllipse(Brushes.LightCoral,tankX+tankW/2-38,tankY+tankH+122,76,76);// 阀门(矩形)g.DrawRectangle(Pens.DarkOrange,tankX+tankW/2-25,tankY+tankH+220,50,40);}

3、实时刷新(绑定传感器数据)

publicclassDevice{publicfloatLiquidLevel{get;set;}}Devicedevice=newDevice();privatevoidtimer1_Tick(objectsender,EventArgse){device.LiquidLevel=GetSensorValue();// 从PLC/Modbus读取Invalidate();// 触发重绘}protectedoverridevoidOnPaint(PaintEventArgse){// 根据液位动态绘制inth=(int)(300*device.LiquidLevel/100f);e.Graphics.FillRectangle(Brushes.Blue,52,348-h,196,h);}

二、WPF 工业绘图

适合:高端上位机、触摸屏、大屏监控

1、XAML 绘图

<Windowx:Class="WpfDrawing.MainWindow"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"><Canvas><!-- 直线 --><LineX1="50"Y1="50"X2="300"Y2="50"Stroke="DodgerBlue"StrokeThickness="3"/><!-- 矩形 --><RectangleCanvas.Left="50"Canvas.Top="100"Width="200"Height="120"Stroke="LimeGreen"StrokeThickness="3"Fill="#8032CD32"/><!-- 圆形 --><EllipseCanvas.Left="350"Canvas.Top="100"Width="120"Height="120"Stroke="Red"StrokeThickness="3"Fill="LightCoral"/></Canvas></Window>

2、WPF 动态绑定

<EllipseWidth="100"Height="100"Fill="{Binding PumpStatus, Converter={StaticResource StatusToColor}}"/>
publicboolPumpStatus{get;set;}// true=绿色,false=红色

参考代码 C# 绘制直线/圆形/矩形 示例源码www.youwenfan.com/contentcsu/62731.html

三、工业绘图核心技巧

问题解决方案
画面闪烁DoubleBuffered = true
实时卡顿定时刷新,不在 Paint 里做计算
坐标不准使用逻辑坐标 → 屏幕坐标转换
图形选中记录图形边界矩形
图层混乱背景层 / 设备层 / 动态层
性能差只刷新变化区域
http://www.jsqmd.com/news/799347/

相关文章:

  • 【数学建模】雾霾问题的建模和仿真分析的MATLAB代码
  • 文献阅读 260511-Wildfire damages and the cost-effective role of forest fuel treatments
  • 基于MCP协议实现AI助手个性化:Terminal Buddies项目实战解析
  • 【计算机毕业设计】基于Springboot的医院后台管理系统设计与实现+LW
  • 小白也能上手!OpenClaw 2.6.4 Windows 一键部署本地 AI 智能体
  • NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来
  • 时序数据库查询新思路:用InfluxDB的SELECT、LIMIT、OFFSET玩转IoT设备历史数据分页
  • 工厂6S搞了没效果?精益生产6S红牌作战实操,30天打造标杆车间!
  • C++ Modbus通信中Long与Float数据解析的字节序处理实战
  • 大一蓝桥杯。卡片
  • MyBili更新至v1.3.0:越来越像“真正适合电视”的B站客户端了
  • 从立体角到坎德拉:揭秘发光强度的核心计算与工程权衡
  • 5大核心功能揭秘:GTA5线上小助手如何彻底改变你的洛圣都冒险体验
  • Swarmocracy:基于蜂群智能的分布式组织决策模拟实践
  • 用PyTorch从零实现REINFORCE算法:一个完整的离散与连续动作空间实战教程
  • shot2:从截图到智能监控,构建自动化视觉信息采集引擎
  • OpenClaw Hooks 模块深度解析 — 双层事件驱动架构
  • Apache Spark:大数据处理的极速引擎与PySpark实战指南
  • 构建现代化图片编辑器的Vue与Fabric.js实践指南
  • Kling AI 技术全解:从底层架构到多模态生成原理
  • 基于椭圆曲线的 Harness 请求签名与验签
  • 【油浸式变压器】在不同气候条件下的油浸式变压器的能量极限研究(Matlab代码实现)
  • 上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享
  • GDScript Mod Loader:为Godot游戏打造专业模组生态的完整指南
  • 大模型岗位深度解析:小白程序员转型指南与收藏必备!
  • Arknights-Mower技术架构解析与效能优化实践
  • 5分钟彻底解决Windows软件DLL缺失问题:VisualCppRedist AIO完整修复方案
  • hive函数的解析及练习
  • 终极指南:如何用FanControl实现Windows系统风扇智能温控与静音优化
  • 游戏开服即“炸服“?CC攻击成游戏行业隐形杀手