(八十八)c#Winform自定义控件-转子
官网
前提
入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章。
GitHub:https://github.com/kwwwvagaa/NetWinformControl
码云:https://gitee.com/kwwwvagaa/net_winform_custom_control.git
如果觉得写的还行,请点个 star 支持一下吧
欢迎前来交流探讨: 企鹅群568015492
来都来了,点个【推荐】再走吧,谢谢
NuGet
Install-Package HZH_Controls
目录
http://www.hzhcontrols.com/blog-63.html
用处及效果
准备工作
也没什么准备的,开撸
开始
添加一个用户控件UCRotor
添加一下属性
1 private Color rotorColor = Color.Black;
2
3 public Color RotorColor
4 {
5 get { return rotorColor; }
6 set
7 {
8 rotorColor = value;
9 Refresh();
10 }
11 }
12
13 RotorAround rotorAround = RotorAround.None;
14 int jiaodu = 0;
15 public RotorAround RotorAround
16 {
17 get { return rotorAround; }
18 set
19 {
20 rotorAround = value;
21 if (value == RotorAround.None)
22 {
23 timer1.Enabled = false;
24 jiaodu = 0;
25 Refresh();
26 }
27 else
28 timer1.Enabled = true;
29 }
30 }
31 private int speed = 100;
32
33 [Description("旋转速度,100-1000,值越小 速度越快"), Category("自定义")]
34 public int Speed
35 {
36 get { return speed; }
37 set
38 {
39 if (value < 100 || value > 1000)
40 return;
41 speed = value;
42 timer1.Interval = value;
43 }
44 }
大小改变事件处理一下
1 void UCRotor_SizeChanged(object sender, EventArgs e)
2 {
3 maxWidth = Math.Min(this.Width, this.Height);
4 one = maxWidth / 10;
5 ResetPathCache();
6
7 }
然后就是重绘了
1 protected override void OnPaint(PaintEventArgs e)
2 {
3 base.OnPaint(e);
4 var g = e.Graphics;
5 this.Region = new System.Drawing.Region(lstCachePath[jiaodu]);
6 g.TranslateTransform(Width / 2, Height / 2);
7 // 旋转画板
8 g.RotateTransform(jiaodu);
9 // 回退画板x,y轴移动过的距离
10 g.TranslateTransform(-(Width / 2), -(Height / 2));
11 g.FillEllipse(new SolidBrush(rotorColor), new Rectangle((this.Width - maxWidth) / 2+5, (this.Height - maxWidth) / 2 + maxWidth / 4 + maxWidth / 8+2, maxWidth / 2-5, maxWidth / 2 - maxWidth / 4-4));
12 g.FillEllipse(new SolidBrush(rotorColor), new Rectangle(this.Width / 2, (this.Height - maxWidth) / 2 + maxWidth / 4 + maxWidth / 8+2, maxWidth / 2-5, maxWidth / 2 - maxWidth / 4-4));
13 g.FillEllipse(new SolidBrush(rotorColor), new Rectangle((this.Width - maxWidth) / 2 + maxWidth / 2 - maxWidth / 8, (this.Height - maxWidth) / 2 + maxWidth / 2 - maxWidth / 8, maxWidth / 4, maxWidth / 4));
14 g.FillEllipse(new SolidBrush(Color.FromArgb(10, Color.White)), new Rectangle((this.Width - maxWidth) / 2 + maxWidth / 2 - maxWidth / 8, (this.Height - maxWidth) / 2 + maxWidth / 2 - maxWidth / 8, maxWidth / 4, maxWidth / 4));
15
16 }
添加一个Timer用以旋转
1 private void timer1_Tick(object sender, EventArgs e)
2 {
3 if (rotorAround == RotorAround.Clockwise)
4 {
5 jiaodu += 15;
6 if (jiaodu == 180)
7 jiaodu = 0;
8 }
9 else if (rotorAround == RotorAround.Counterclockwise)
10 {
11 jiaodu -= 15;
12 if (jiaodu < 0)
13 jiaodu = 165;
14 }
15
16 Refresh();
17 }
最后的话
如果你喜欢的话,请到 https://gitee.com/kwwwvagaa/net_winform_custom_control 点个星星吧
(八十八)c#Winform自定义控件-转子的更多相关文章
- (八十)c#Winform自定义控件-分割线标签-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- (三十)c#Winform自定义控件-文本框(三)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (二十)c#Winform自定义控件-有后退的窗体
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (五十)c#Winform自定义控件-滑块
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- (八十三)c#Winform自定义控件-导航菜单(扩展)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- (八十一)c#Winform自定义控件-时间轴-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
- (十)c#Winform自定义控件-横向列表
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. 开源地址:https://gitee.com/kwwwvagaa/net_winform_custom_control ...
- (六十)c#Winform自定义控件-鼓风机(工业)
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- (七十)c#Winform自定义控件-饼状图
前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...
- (四十)c#Winform自定义控件-开关-HZHControls
官网 http://www.hzhcontrols.com 前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kww ...
随机推荐
- Web前端 -- NPM包管理器
初始化: #建立一个空文件夹,在命令提示符进入该文件夹 执行命令初始化 npm init #按照提示输入相关信息,如果是用默认值则直接回车即可. #name: 项目名称 #version: 项目版本号 ...
- vue截取video视频中的某一帧
在vue中如何做到给视频拍照,留住那一帧的美好呢? 且看代码 <template> <div> <video src="../assets/video.mp4& ...
- 力扣620(MySQL)-有趣的电影(简单)
题目: 某城市开了一家新的电影院,吸引了很多人过来看电影.该电影院特别注意用户体验,专门有个 LED显示板做电影推荐,上面公布着影评和相关电影描述. 作为该电影院的信息部主管,您需要编写一个 SQL查 ...
- 暑期集训 Day5 —— 模拟赛复盘
${\color{Green} \mathrm{Problem\ 1 :选数 }} $ 签到题,一眼二分,但是打模板时死循环了: while(L<R){ int mid=(L+R)>> ...
- 数据库PolarDB开源之路该如何走?听听他们怎么说
简介: 10月25日,由阿里云开发者社区.阿里云PolarDB开源社区.InfoQ联合举办的「开源人说」数据库PolarDB专场线下沙龙在杭州召开,5位阿里云数据库超级大咖.10位阿里云数据库开源生态 ...
- OpenYurt 深度解读:如何构建 Kubernetes 原生云边高效协同网络?
作者 | 郑超 导读:OpenYurt 是阿里巴巴开源的云边协同一体化架构,与同类开源方案相比,OpenYurt 拥有可实现边缘计算全场景覆盖的能力.在之前的一篇文章中,我们介绍了 OpenYurt ...
- 云原生DevOps的5步升级路径
简介: 究竟什么是云原生DevOps呢?我们认为:云原生DevOps是充分利用云原生基础设施,基于微服务/无服务架构体系和开源标准,语言和框架无关,具备持续交付和智能自运维能力,从而做到比传统DevO ...
- 使用友盟+的APM服务实现对移动端APP的性能监控
简介: 对于信息系统服务,一般我们的重点监控对象都是核心的后端服务,通常会采用一些主流的APM(Application Performance Management)框架进行监控.告警.分析.那么对 ...
- Apsara Stack 2.0技术百科(9宫格)
原文链接 本文为阿里云原创内容,未经允许不得转载.
- [FE] uni-app 导航栏开发指南
一种是 原生导航栏添加自定义按钮.简单明了. pages.json 配置 { "path": "pages/log/log", "style" ...