首页 > 编程语言 >c#自定义Winfrom飞机仪表控件-第一个

c#自定义Winfrom飞机仪表控件-第一个

时间:2024-06-19 20:54:02浏览次数:12  
标签:控件 自定义 c# 仪表 刻度 背景图 刻度盘

先看下效果,这是客户定制的飞机仪表控件中的一个。

 

我们来分析下这个这种控件要怎么开发,开发思路是什么。

  • 背景边框,这个你可以用gdi+画,或者让美工做背景图,我这里直接让美工做背景图了,中间部分留黑。

  • 刻度盘有左中右下总计5个

  • 左侧的刻度盘又有一个放大盘

  • 右侧刻度盘也有一个放大盘

  • 最右侧一个异形的刻度盘

  • 底部一个圆形刻度盘

  • 中间的是比较复杂的仰角、倾斜、地平线等

下面我们就详细的来一个一个分析。

1、背景图:这个就没什么好说的了,直接设置下背景即可

2、左侧刻度:添加一个自定义控件,设置为需要的大小

    再OnPaint事件中绘制背景色、根据刻度值来画刻度线和写数值、再画一个异形的放大刻度框,将放大的值写进去

3、右侧的2个跟2中的基本类似

4、底部圆盘刻度,根据三角函数勾股定理计算出每个刻度线的起始结束坐标,画线并写刻度值

5、中间的这个就比较麻烦一点了,需要根据仰角来画地平线的位置,同时需要进行画布旋转来实现倾斜角

 

至于源码就只能说不好意思了,这是客户定制的,不能放出来源码了。

当然,如果有你控件、仪表等需要定制开发的话,可以联系我哦,QQ:623128629    VX:hzhcontrols,添加我的时候请备注意图。

原文链接:http://www.hzhcontrols.com/blog-171.html

标签:控件,自定义,c#,仪表,刻度,背景图,刻度盘
From: https://www.cnblogs.com/bfyx/p/18257374

相关文章

  • 对于java中向上转型后调用.getClass()方法还是子类的原因
    在java中有一个概念叫引用。官方给的定义是这样的:在Java中,"引用"(Reference)是指一个变量,它存储了对象的内存地址,而不是对象本身。换句话说,引用是指向对象的指针或者句柄。在Java中,所有的对象都通过引用来访问和操作,而不是直接访问对象本身。 通俗的将就是一个指路人,当有人询......
  • Microsoft.AspNetCore.Identity 的使用记录
    使用Cookie,在发起请求时从浏览器附加Cookie的示例图:请求后自动生成Cookie,缓存保存于浏览器中以后每次发起请求时浏览器都会自动为请求附加其缓存的Cookies使用访问令牌bearertoken,在发起请求时附加了Authorization请求头,示例注意,如果手动传参,Head中Authorizaion的值要......
  • 本地快速部署 SuperSonic
    本地快速部署SuperSonic0.引言1.本地快速部署supersonic2.访问supersonic3.支持的数据库4.github地址0.引言SuperSonic融合ChatBI(poweredbyLLM)和HeadlessBI(poweredby语义层)打造新一代的BI平台。这种融合确保了ChatBI能够与传统BI一样访问统一化治理......
  • 人脸特征标注——OpenCV
    特征标注导入必要的库创建窗口显示原始图片和标注后的图片存储用户选择的图片路径字体样式和大小定义了select_image函数定义了annotate_landmarks()函数设置按钮调整图片标签的位置设置图片位置主事件循环运行显示:全部代码导入必要的库importtkinterastk:导入......
  • 【diffusers 极速入门(二)】如何得到扩散去噪的中间结果?Pipeline callbacks 管道回调函
    本文是对HuggingFaceDiffusers文档中关于回调函数的翻译与总结,:管道回调函数在管道的去噪循环中,可以使用callback_on_step_end参数添加自定义回调函数。该回调函数在每一步结束时执行,并修改管道属性和变量,以供下一步使用。这在动态调整某些管道属性或修改张量变量时非......
  • 【可控图像生成系列论文(一)】MimicBrush 港大、阿里、蚂蚁集团合作论文解读
    背景:考虑到用户的不同需求,图像编辑是一项实用而富有挑战性的任务,其中最困难的部分之一是准确描述编辑后的图像应该是什么样子。创新点:在本文作者提出了一种新的编辑形式,称为模仿编辑,以帮助用户更方便地发挥他们的创造力。具体地说,为了编辑感兴趣的图像区域,用户可以自由地......
  • linux下C语言如何操作文件(四)
    structstring_segment*parse_path(constchar*file_path)函数,解析路径,将一个linux的路径分成两部分路径和文件名。返回一个字符串分段接头体指针,里边有三个字符串。第0个是原始的file_path,第二个是已经拆分好的路径,第三个是文件名部分。代码如下:/***解析linux下的路径......
  • DM8DSC + 实时主备 搭建
    Dsc搭建一:介绍  DM共享存储数据库集群的英文全称DMDataSharedCluster,简称DMDSC。  DM共享存储数据库集群,允许多个数据库实例同时访问、操作同一数据库,具有高可用、高性能、负载均衡等特性。DMDSC支持故障自动切换和故障自动重加入,某一个数据库实例故障后,......
  • P6261 [ICPC2019 WF] Traffic Blights 题解
    思路考虑题目要求的是什么。假设\(p_i\)代表通过前\(i\)个红绿灯的概率。那么我们的答案即为\(p_i-p_{i-1}\)。不妨设\(w_i=r_i+g_i\)。我们的限制条件类似:\[t\not\equiva_i\pmodw_i\]那么所有红绿灯会形成周期\(lcm(w_1,w_2,\cdots,w_n)\)。由于\(2019!\)肯......
  • (nice!!!)LeetCode 2713. 矩阵中严格递增的单元格数(动态规划、哈希表)
    2713.矩阵中严格递增的单元格数思路:1、先对数组中的元素按值从小到大处理2、对于当前的元素值,可以更新当前所在行和列的最大值。3、最后每一行或每一列的最大值即为所求值细节看注释classSolution{public:intmaxIncreasingCells(vector<vector<int>>&mat......