首页 > 其他分享 >winform控件开发一之复合控件开发(3)调节阀(regulate valve)

winform控件开发一之复合控件开发(3)调节阀(regulate valve)

时间:2023-06-21 16:05:52浏览次数:43  
标签:控件 调节阀 path3 Point Color 一之 Height Width new

使用自定义控件,实现一个调节阀,显示效果如下:

 实现代码如下:

using System.Drawing;
using System.Drawing.Drawing2D;
using System.Windows.Forms;

namespace 各种C_sharp功能测试
{
    public partial class RegulateValve : Control
    {
        public RegulateValve()
        {
            InitializeComponent();
            SetStyle(ControlStyles.AllPaintingInWmPaint, true);
            SetStyle(ControlStyles.UserPaint, true);
            SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
            SetStyle(ControlStyles.ResizeRedraw, true);
            SetStyle(ControlStyles.SupportsTransparentBackColor, true);
        }
        //阀门开度
        private float openValue;

        public float OpenValue
        {
            get { return openValue; }
            set { openValue = value; Invalidate(); }
        }


        //阀门开时显示的颜色
        private Color openColor = Color.Green;

        public Color OpenColor
        {
            get { return openColor; }
            set { openColor = value; Invalidate(); }
        }

        //阀门关时显示的颜色
        private Color closeColor = Color.Red;

        public Color CloseColor
        {
            get { return closeColor; }
            set { closeColor = value; Invalidate(); }
        }
        protected override void OnPaint(PaintEventArgs pe)
        {
            base.OnPaint(pe);
            //获取绘图对象
            Graphics g = pe.Graphics;
            //呈现质量设置为高质量
            g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality;
            //g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;//HighQuality和AntiAlias执行效果相同

            //第一步绘制上方扇形
            GraphicsPath path1 = new GraphicsPath();
            Rectangle rect = new Rectangle(Width / 4, 0, Width / 2, Height * 2 / 3);
            path1.AddArc(rect, 180f, 180f);
            path1.CloseFigure();
            g.FillPath(new SolidBrush(OpenValue > 0 ? openColor : closeColor), path1);
            //第二步绘制中间竖线
            g.DrawLine(new Pen(Color.Black, 2f), new Point(Width / 2, Height / 3), new Point(Width / 2, Height * 2 / 3));
            //第三步绘制下方8字三角形
            GraphicsPath path3 = new GraphicsPath();
            Point p1 = new Point(0, Height / 3);
            Point p2 = new Point(Width - 1, Height / 3);
            Point p3 = new Point(Width - 1, Height - 1);
            Point p4 = new Point(0, Height - 1);
            path3.AddLine(p1, p3);
            path3.AddLine(p3, p2);
            path3.AddLine(p2, p4);
            path3.AddLine(p4, p1);
            path3.CloseFigure();
            g.FillPath(new SolidBrush(OpenValue > 0 ? openColor : closeColor), path3);
        }
    }
}

 

标签:控件,调节阀,path3,Point,Color,一之,Height,Width,new
From: https://www.cnblogs.com/hanzq/p/17496441.html

相关文章

  • winform控件开发一之复合控件开发(2)开关阀(shut-off valve)
    实现一个开关阀控件,使用自定义控件,显示效果如下所示:其中,上方为线圈状态,下方为阀体状态,如下所示: 当线圈给电时,线圈为绿色;当线圈失电时,线圈为红色;代码中用value1控制当阀门开到位时,阀体状态显示为绿色;当阀门关到位时,阀体状态显示为红色;代码中用value2控制 代码如下:usingS......
  • winform控件开发一之复合控件开发(1)模拟量显示1
    winform控件开发包括三种类型复合控件,又称为组合控件扩展控件自定义控件复合控件:复合控件,又称为组合控件,一般是将现有控件功能进行组合形成一个新的控件。举例:设计一个工控中常用的模拟量控件,可以显示变量的名称,变量值和单位,如下图所示 在这个复合空间中,左边使用一个l......
  • ui设计师界面combobox控件添加鼠标点击信号
    一、概述combobox下拉框控件下拉后会显示预设好的选择内容,可是想要实现显示内容动态可变,点击的时候实时刷新到最新内容,就需要点击信号,但是qt本身没有实现这个点击信号。要实现这个功能本质方法是需要重写combobox的鼠标点击事件,这里介绍如何为ui设计师界面的combobox控件添加......
  • Qt编写控件组态属性设计器源码属性设计器产品不包括里面控件的源码
    Qt编写控件组态属性设计器源码属性设计器产品不包括里面控件的源码1.自动加载插件文件中的所有控件生成列表,默认自带的控件超过120个。2.拖曳到画布自动生成对应的控件,所见即所得。3.右侧中文属性栏,改变对应的属性立即应用到对应选中控件,直观简洁,非常适合小白使用。4.独创属性......
  • 菜单的程序控件出现和消失
    @OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);ButtonmenuButton=(Button)findViewById(R.id.menuButton);menuButton.setOnClickListener(newView.OnClickListener(){......
  • DevExpress WPF功能区控件,更轻松创建商业应用工具栏!(下)
    在上文中(点击这里回顾>>),我们主要介绍了DevExpressWPF的Ribbon、Toolbar和Menus组件支持MVVM、功能区命令栏和视图等,本文将继续介绍这些组件的自定义功能等。DevExpressWPF拥有120+个控件和库,将帮助您交付满足甚至超出企业需求的高性能业务应用程序。通过DevExpressWPF能创建......
  • (五)表单、表单控件
    一、表单 二、表单控件 ......
  • VCL界面控件DevExpress VCL v23.1.3全新首发 - 支持Windows 11新主题
    DevExpressVCL Controls是Devexpress公司旗下最老牌的用户界面套包,所包含的控件有:数据录入、图表、数据分析、导航、布局等。该控件能帮助您创建优异的用户体验,提供高影响力的业务解决方案,并利用您现有的VCL技能为未来构建下一代应用程序。DevExpressVCLv23.1官方正式版下载......
  • 【.NET深呼吸】用代码写WPF控件模板
    这一次咱们来探究一下怎么用纯代码写WPF模板。模板有个共同基类 FrameworkTemplate,数据模板、控件模板等是从此类派生的,因此,该类已定义了一些通用成员。用代码构建模板,重要的成员是 VisualTree属性,它的类型是 FrameworkElementFactory。可见,模板不是直接创建可视化对象,而是......
  • MFC练习2:使用Picture Control控件显示图片
    该方式优点是可以显示JPG等其它格式的图片。一、实验步骤1、使用MFC应用程序向导添加基于对话框的项目;2、在资源视图中拖控件设计UI界面,包含PictureControl和Button共2个控件;3、修改PictureControl控件的Type为Bitmap;4、双击Button按钮编写如下代码voidCpicTestDlg::......