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

C# 实现draw一个简单的温度计

运行结果

概述:

代码分析

该控件主要包含以下几个部分:

  1. 属性定义

    • MinValue:最低温度值。

    • MaxValue:最高温度值。

    • CurrentValue:当前温度值。

  2. 构造函数

    • 设置了一些控件样式来提升绘制效果,如 DoubleBuffer 以及 ResizeRedraw 等。

    • 设定了控件的默认宽度和高度,并设置背景色和内边距。

  3. 绘制逻辑(在 OnPaint 方法中):

    • 使用 Graphics 类的方法来绘制控件的各个部分。

    • 先绘制背景,然后绘制温度计的边框。

    • 根据 MinValue 和 MaxValue 来绘制刻度线和刻度数字。

    • 最后根据 CurrentValue 绘制红色表示当前温度的水银柱。

这段代码创建了一个温度计控件,可以设置和显示温度值范围。通过重写 OnPaint 方法,绘制出控件的背景、边框、刻度线和水银柱。用户可以通过设置 MinValueMaxValue 和 CurrentValue 属性来改变温度计的显示。

调用代码:

private void button1_Click(object sender, EventArgs e){temperatureGauge1.CurrentValue += 10;}private void button2_Click(object sender, EventArgs e){temperatureGauge1.CurrentValue -= 10;}

控件代码:

using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace WindowsFormsApp1
{    public class TemperatureGauge : Control{private int minValue = 0;private int maxValue = 100;private int currentValue = 50;public int MinValue{get { return minValue; }set { minValue = value; Invalidate(); }}public int MaxValue{get { return maxValue; }set { maxValue = value; Invalidate(); }}public int CurrentValue{get { return currentValue; }set{if (value < minValue)currentValue = minValue;else if (value > maxValue)currentValue = maxValue;elsecurrentValue = value;Invalidate();}}public TemperatureGauge(){SetStyle(ControlStyles.ResizeRedraw, true);SetStyle(ControlStyles.DoubleBuffer, true);SetStyle(ControlStyles.AllPaintingInWmPaint, true);SetStyle(ControlStyles.UserPaint, true);Width = 60;  // 控制宽度以控制温度计的高度Height = 300; // 控制高度以控制温度计的宽度BackColor = Color.WhiteSmoke;Padding = new Padding(2, 20, 2, 20);}protected override void OnPaint(PaintEventArgs e){base.OnPaint(e);Graphics g = e.Graphics;g.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.AntiAlias;// 绘制背景g.FillRectangle(Brushes.White, Padding.Left, Padding.Top, Width - Padding.Horizontal, Height - Padding.Vertical);// 绘制边框g.DrawRectangle(Pens.AliceBlue, Padding.Left, Padding.Top, Width - Padding.Horizontal - 1, Height - Padding.Vertical - 1);// 绘制刻度线for (int i = minValue; i <= maxValue; i += 10){float yPos = (float)(maxValue - i) / (maxValue - minValue) * (Height - Padding.Vertical) + Padding.Top;g.DrawLine(Pens.Black, Padding.Left + 10, yPos, Padding.Left + 20, yPos);g.DrawString(i.ToString(), Font, Brushes.Black, Padding.Left + 25, yPos - 10);}// 绘制水银柱float indicatorY = (float)(maxValue - currentValue) / (maxValue - minValue) * (Height - Padding.Vertical) + Padding.Top;float mercuryHeight = (Height - Padding.Vertical) - (indicatorY - Padding.Top);g.FillRectangle(Brushes.Red, Padding.Left + 10, indicatorY, 10, mercuryHeight);}}
}

完整代码下载

【免费】C#实现draw一个简单的温度计资源-CSDN文库icon-default.png?t=N7T8https://download.csdn.net/download/anlog/89465905

参考链接

C# 实现draw一个简单的温度计 (qq.com)icon-default.png?t=N7T8https://mp.weixin.qq.com/s?__biz=MzUxMjI3OTQzMQ==&mid=2247488637&idx=2&sn=ded3194de1158128f29b2519e371ae18&chksm=f9678295ce100b830313ad32006d258269a4768e135bf01ac68400ba7e46ccdad05a7c690995&mpshare=1&scene=1&srcid=062036jsNqbQXDC5RaQVT8wm&sharer_shareinfo=a5133170b492dcddf1a0f88969451270&sharer_shareinfo_first=0c72e181d0952a85a3801b064fe2fe1e#rd

特此记录

anlog

2024年6月21日 

相关文章:

C# 实现draw一个简单的温度计

运行结果 概述&#xff1a; 代码分析 该控件主要包含以下几个部分&#xff1a; 属性定义&#xff1a; MinValue&#xff1a;最低温度值。 MaxValue&#xff1a;最高温度值。 CurrentValue&#xff1a;当前温度值。 构造函数&#xff1a; 设置了一些控件样式来提升绘制效果…...

解放双手,让流程自动化软件助你一臂之力

本文将介绍流程自动化软件/脚本/助手的用途&#xff0c;同时我也做个自我介绍&#xff1a; &#x1f3c6; 技术专长&#xff1a;专注于自动化脚本、网站、小程序、软件、爬虫及数据采集的定制化开发&#xff0c;为客户提供全方位的数字化解决方案。 &#x1f4bc; 行业经验&…...

邀请函 | 桥田智能出席AMTS展会 家族新成员正式发布

作为国际汽车制造技术与装备及材料专业展览会&#xff0c;AMTS将于2024年7月3-5日在上海新国际博览中心举行。本届展会以【向“新”而行 “智”领未来】为主题&#xff0c;聚焦汽车及新能源全产业链&#xff0c;围绕“车身工程、部件工程、新能源三电工程及未来汽车开发”等技…...

安卓开发使用proxyman监控真机

1、真机跟电脑连接到同个网络中 2、手机里面设置代理&#xff0c;代理地址为proxyman上面指示的地址。 3、一般情况下&#xff0c;电脑的对应的端口是没开放的。需要到防火墙里面新建规则。入站规则 选择端口输入上方端口号 这样就能监控到了...

ruoyi登录功能源码分析

Ruoyi登录功能源码分析 上一篇文章我们分析了一下若依登录验证码生成的代码&#xff0c;今天我们来分析一下登录功能的代码 1、发送登录请求 前端通过http://localhost/dev-api/login向后端发送登录请求并携带用户的登录表单 在后端中的com.ruoyi.web.controller.system包下…...

推动产业数字化转型,六个方面引领变革

从工业经济时代走向数字经济时代&#xff0c;世界经济发生着全方位、革命性的变化&#xff0c;产业数字化便是最显著的表现之一。当前&#xff0c;产业数字化不断深入发展&#xff0c;平台经济、工业互联网、智能制造等新业态、新模式不断涌现&#xff0c;成为了数字经济的重要…...

设施布置之车间布局优化SLP分析

一 物流分析&#xff08;Flow Analysis&#xff09; 的基本方法 1、当物料移动是工艺过程的主要部分时&#xff0c;物流分析就是工厂布置设计的核心工作&#xff0c;也是物料搬运分析的开始。 2、零部件物流是该部件在工厂内移动时所走过的路线&#xff0c; 物流分析不仅要考虑…...

帕金森的锻炼方式

帕金森病&#xff0c;这个看似陌生的名词&#xff0c;其实离我们并不遥远。它是一种常见的神经系统疾病&#xff0c;影响着许多中老年人的生活质量。虽然帕金森病目前尚无根治之法&#xff0c;但通过科学合理的日常锻炼&#xff0c;可以有效缓解病情&#xff0c;提高生活质量。…...

PyTorch(一)模型训练过程

PyTorch&#xff08;一&#xff09;模型训练过程 #c 总结 实践总结 该实践从「数据处理」开始到最后利用训练好的「模型」预测&#xff0c;感受到了整个模型的训练过程。其中也有部分知识点&#xff0c;例如定义神经网络&#xff0c;只是初步的模仿&#xff0c;有一个比较浅的…...

windows下cmd命令行模式中cd变换路径命令无效的解决办法

一&#xff0c;出现的情况 二&#xff0c;解决方法 当出现转换盘的时候打开 cmd 之后可能是无法生效的 &#xff0c;因为在cmd 中转换盘首先需要用到换盘符 。 Solve1 : 先进行换盘 C: c: // 转换到 C盘 D: d: // 转化到 D盘 Solve2 : 直接进行强转 cd /dE:\ACM算法资源\XCP…...

收藏||电商数据采集流程||电商数据采集API接口

商务数据分析的流程 第一步&#xff1a;明确分析目的。首先要明确分析目的&#xff0c;并把分析目的分解成若干个不同的分析要点&#xff0c;然后梳理分析思路&#xff0c;最后搭建分析框架。 第二步&#xff1a;数据采集。主流电商API接口数据采集&#xff0c;一般可以通过数…...

修改源码,打patch包,线上环境不生效

1.首先看修改的源码文件是否正确 在node_modules中&#xff0c;找对应的包&#xff0c;然后查看包中package.json 的main和module。如果用require引入&#xff0c;则修改lib下面的组件&#xff0c;如果是import引入则修改es下面的文件 main 对应commonjs引入方式的程序入口文件…...

NUC980-OLED实现全中文字库的方法

1.背景 有一个产品&#xff0c;客户需要屏幕展示一些内容&#xff0c;要带一些中文&#xff0c;实现了OLED12864的驱动&#xff0c;但是它不带字库&#xff0c;现在要实现OLED全字库的显示 2.制作原始字库 下载软件pctolcd2002 设置 制作字库 打开原始文件 用软件自带的&…...

UEFI 启动原理及qemu 虚拟化中使用

UEFI 启动原理及qemu 虚拟化中使用 什么是BIOS&#xff1f;什么是 UEFI&#xff1f; 什么是BIOS&#xff1f; 计算机启动时会加载 BIOS&#xff0c;以初始化和测试硬件功能。它使用 POST 或 Power On Self Test 来确保硬件配置有效且工作正常&#xff0c;然后寻找存储引导设…...

35、正则表达式

一、正则表达式命令 正则表达式&#xff1a;匹配的是文本内容&#xff0c;linux的文本三剑客都是针对文本内容。 ​ grep 过滤文本内容 ​ sed 针对文本内容进行增删改查 ​ awk 按行取列 文本三剑客----都是按照行进行匹配。 1.1、grep筛选&#xff1a; grep的作用就是…...

Ubuntu20.04中复现FoundationPose

Ubuntu20.04中复现FoundationPose 文章目录 Ubuntu20.04中复现FoundationPose1.安装cuda和cudnn2.下载相关资源3.环境配置4.运行model-based demo5.运行ycbv demoReference &#x1f680; 非常重要的环境配置 &#x1f680; ubuntu 20.04cuda 11.8.0cudnn v8.9.7python 3.9.19…...

【Qt快速入门(四)】- QLabel文本框的使用

目录 Qt快速入门&#xff08;四&#xff09;- QLabel文本框的使用QLabel文本框的使用QLabel的基本用法1. 创建和设置文本2. 动态设置文本 设置文本样式1.设置字体和颜色2.文本对齐方式3.富文本显示 显示图片QLabel的交互功能可点击标签 QLabel的高级特性1.缩放图片以适应标签大…...

用Python设置Excel工作表网格线的隐藏与显示

Excel表格界面的直观性很大程度上得益于表格中的网格线设计&#xff0c;这些线条帮助用户精确对齐数据&#xff0c;清晰划分单元格。网格线是Excel界面中默认显示的辅助线&#xff0c;用于辅助定位&#xff0c;与单元格边框不痛&#xff0c;不影响打印输出。然而&#xff0c;在…...

自回归模型胜过扩散模型:用于可扩展图像生成的 Llama

&#x1f4dc; 文献卡 Autoregressive Model Beats Diffusion: Llama for Scalable Image Generation作者: Peize Sun; Yi Jiang; Shoufa Chen; Shilong Zhang; Bingyue Peng; Ping Luo; Zehuan YuanDOI: 10.48550/arXiv.2406.06525摘要: We introduce LlamaGen, a new family …...

访问外网的安全保障——反向沙箱

反向沙箱作为一种网络安全技术&#xff0c;其核心理念在于通过构建一个隔离且受控的环境&#xff0c;来有效阻止潜在的网络威胁对真实系统的影响。在当今日益复杂的网络环境中&#xff0c;如何借助反向沙箱实现安全上网&#xff0c;已成为众多用户关注的焦点。 随着信息化的发…...

家用扫地机器人研发技术路线

第四部分:如何一步步做出来 | 18个月 4阶段 从原型到量产 摘要:本文详细介绍了扫地机器人从原型到量产的研发流程,分为4个关键阶段。首先聚焦四大技术难点:SLAM定位、AI视觉识别、仿生机械臂和静音风机系统。研发过程包括实验室原型验证、工程样机测试、小批量真实场景测…...

Andorid下给PDF盖骑缝章的方法—安卓手机批量盖骑缝章的方法

Andorid下给PDF盖骑缝章的方法&#xff0c;安卓手机批量盖骑缝章的方法。一、准备印章图片1。不需要制作为透明的印章&#xff0c;用白底Png格式图片即可&#xff0c;白底图片盖章时软件会自动透明并融合。2。印章边线与图片四边不要有空隙&#xff0c;如下&#xff1a;错误的&…...

Java开发者收藏 | 你的经验不是负担,而是转型AI应用开发的加速器!

本文为Java开发者提供了清晰的AI应用开发转型路径。强调Java后端经验在AI领域是宝贵财富而非负担&#xff0c;并介绍了拥抱AI的优势。文章提出了分阶段学习路线&#xff0c;涵盖基础概念、框架选型&#xff08;Spring AI、LangChain4j、Spring AI Alibaba&#xff09;、可视化工…...

优化ESP32 ADF 音频问题

可以&#xff0c;现在已经进入音质调试阶段了&#xff0c;不是“能不能播放”的阶段。 你现在的问题大概率不是一个单点问题&#xff0c;而是下面几类之一&#xff1a; 1. 音量 / 增益太大&#xff0c;导致 ES8388 或 MD8002A 功放削顶失真 2. I2S 时钟不准&#xff0c;导致声音…...

AI驱动的网络安全:深度学习与LLM在威胁检测与教育中的应用

1. 项目概述&#xff1a;AI赋能的网络安全新范式在网络安全领域&#xff0c;我们正面临着一个日益严峻的悖论&#xff1a;一方面&#xff0c;攻击手段正变得前所未有的复杂和自动化&#xff1b;另一方面&#xff0c;74%的安全事件仍然源于人为因素。这种技术与人的双重挑战催生…...

移动通信浪潮如何重塑半导体产业格局:从高通与英特尔市值对比说起

1. 从市场估值看产业浪潮&#xff1a;移动通信如何重塑半导体格局2013年春天&#xff0c;一则消息在半导体和投资圈内引发了不小的震动&#xff1a;无线通信芯片巨头高通&#xff08;Qualcomm&#xff09;的市值&#xff0c;悄然与行业传统霸主英特尔&#xff08;Intel&#xf…...

上古卷轴5天际整合包下载最新全热门MOD整合(画质+人物+功能+场景全美化)下载分享

一、整合包基础概况 新手向懒人专属整合资源&#xff0c;适配电脑Windows系统。整合包集成多款热门优质MOD&#xff0c;无需玩家单独下载模组&#xff0c;整合包整体兼容性强&#xff0c;适配主流家用电脑&#xff0c;官方提前做好模组适配优化&#xff0c;规避多数模组冲突问…...

保姆级教程:在Ubuntu 22.04上从源码编译DPDK TestPMD并跑通第一个包转发测试

从零构建DPDK TestPMD&#xff1a;Ubuntu 22.04实战指南与性能调优 当你第一次听说DPDK能实现百万级数据包转发时&#xff0c;是否好奇这背后的技术魔法&#xff1f;本文将带你用一台普通Ubuntu服务器&#xff0c;亲手搭建这套高性能网络处理框架。不同于官方文档的抽象描述&am…...

别再傻等进位了!手把手教你用Verilog实现4位超前进位加法器(附完整代码)

超前进位加法器的Verilog实战&#xff1a;从理论到硬件加速的完整实现 在数字电路设计中&#xff0c;加法器是最基础却又最关键的运算单元之一。传统行波进位加法器虽然结构简单&#xff0c;但在高位宽运算时&#xff0c;其级联进位方式导致的延迟问题会严重影响系统性能。想象…...

别再只调包了!用PyTorch和DGL从零实现一个GCN层(附Cora节点分类实战代码)

从零构建图卷积网络&#xff1a;PyTorch与DGL实战中的底层逻辑拆解 当你第一次调用g.update_all()时&#xff0c;是否好奇过DGL框架背后究竟发生了什么&#xff1f;那些看似简单的消息传递和聚合操作&#xff0c;实际上隐藏着图卷积网络最精妙的设计思想。本文将带你深入GCN的数…...