新普金娱乐网址


过得不得了,请别自卑

扭亏这一点从:怎么样鉴别靠谱的智能投顾平台?

WPF自定义控件(1)——仪表盘设计[1]

  • 十二月 20, 2018
  • 数学
  • 没有评论

人口的百年,是在到直,学到老的经过。大学教育最想念叫会大家的,就是积极去读书,去追究,只有养成一种自学的力与习惯,你才可以永远保持提升。

5、指针绘制

开表面的指针,可以生多方案,网上有许多个人口说,用图片代替,不过图一旦松开后,就晤面换得模糊,由此,我如故好出手,做了一个简单易行的指针,同样是使用Path方法,使用路径绘图,XAML代码如下,指针重要由2长长的直线与均等干净弧组成,使用了粉红色填充。

 1 <Path x:Name="indicatorPin" Fill="Orange">
 2     <Path.Data>
 3         <PathGeometry>
 4             <PathGeometry.Figures>
 5                 <PathFigure StartPoint="200,195" IsClosed="True">
 6                     <PathFigure.Segments>
 7                         <LineSegment Point="20,200"/>
 8                         <LineSegment Point="200,205"/>
 9                     </PathFigure.Segments>
10                 </PathFigure>
11             </PathGeometry.Figures>
12         </PathGeometry>
13     </Path.Data>
14 </Path>

 很多表盘中间发生一个指令数值的,这里,我也由此一个文本块来仿制一下,XAML语言如下,注意,文本块的岗位设分配好。

<TextBlock x:Name="currentValueTxtBlock" FontSize="20" Canvas.Left="140" Canvas.Top="150"/>

 最终外观如下图所示:

图片 1

自学能力

总计心得

其一表盘如今虽好简单,可是自己平步一步思考然后开出来的,前面要需要充足定制越来越强的效率,相信一箭穿心的。第一不良写博客,比想像被之不便多了,感觉很多事物还难以发挥清楚。同时以还好的揭橥效果,用了visio制图,和MathType公式编辑器,还由此了录屏软件录制窗口录像,然后用迅雷看看截出gif图,最后将gif图处理一下,宣布暨博客中,着实不便于,相信前边会更好之。

再者,下一样目标,将之表盘美化和封装成用户控件,供项目调用。

下下一目标,制作图纸控件,敬请关注!!

也恰好以这么,很多总人口至了大学后,原本周围令人窒息的下压力,一下子咸没有了,取而代之的是边的妄动空气。

4、表盘刻度值加加

刻度值是用文本块表示的(TextBlock控件)。控制好文本块在表面中之坐标就尽,实现吗要命易,这里出使顾的一点凡是,由于负有控件是的坐标起点是盖左上角为零点,当角度过90度过的时候,坐标应当具备补偿。直接说或许说不清楚,在代码中领会,依旧是针对性DrawScale()函数举行改动如下:

 1 private void DrawScale()
 2 {
 3     for (int i = 0; i <= 180; i += 5)
 4     {
 5         //添加刻度线
 6         Line lineScale = new Line();
 7 
 8         if (i % 25 == 0)
 9         {
10             lineScale.X1 = 200 - 160 * Math.Cos(i * Math.PI / 180);
11             lineScale.Y1 = 200 - 160 * Math.Sin(i * Math.PI / 180);
12             lineScale.Stroke = new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0));
13             lineScale.StrokeThickness = 3;
14 
15             //添加刻度值
16             TextBlock txtScale = new TextBlock();
17             txtScale.Text = (i).ToString();
18             txtScale.FontSize = 10;
19             if (i <= 90)//对坐标值进行一定的修正
20             {
21                 Canvas.SetLeft(txtScale, 200 - 155 * Math.Cos(i * Math.PI / 180));
22             }
23             else
24             {
25                 Canvas.SetLeft(txtScale, 190 - 155 * Math.Cos(i * Math.PI / 180));
26             }
27             Canvas.SetTop(txtScale, 200 - 155 * Math.Sin(i * Math.PI / 180));
28             this.gaugeCanvas.Children.Add(txtScale);
29         }
30         else
31         {
32             lineScale.X1 = 200 - 170 * Math.Cos(i * Math.PI / 180);
33             lineScale.Y1 = 200 - 170 * Math.Sin(i * Math.PI / 180);
34             lineScale.Stroke = new SolidColorBrush(Color.FromRgb(0xFF, 0x00, 0));
35             lineScale.StrokeThickness = 1;
36         }
37 
38         lineScale.X2 = 200 - 180 * Math.Cos(i * Math.PI / 180);
39         lineScale.Y2 = 200 - 180 * Math.Sin(i * Math.PI / 180);
40 
41         this.gaugeCanvas.Children.Add(lineScale);
42     }
43 }

补偿加刻度值后的效应使下图

图片 2

就此,下边要介绍几触及,我思即刻几乎碰,是当广大取得中,于自我而言,相比较紧要之。

2、表盘外概况

 起始设计,外概况由三截组成:yellow、green、red,借助WPF强大的绘图成效,做了一个逐渐变色,稍微美化了瞬间,如下图。(此圆的半径为:200px)

图片 3

显然可以关押下,那些圆由三段子弧组成的,如若观望仔细的语,可以隐约看到2根有些白线,就是三段落弧的分界处。

1.黄色弧绘制

代码如下:

 1 <Path StrokeThickness="30" Width="420" Height="400" StrokeStartLineCap="Round">
 2     <Path.Data>
 3         <PathGeometry Figures="M 0,200 A 200,200 0 0 1 58.57864,58.57864"/>
 4     </Path.Data>
 5     <Path.Stroke>
 6         <LinearGradientBrush StartPoint="0,0" EndPoint="0,1">
 7             <LinearGradientBrush.GradientStops>
 8                 <GradientStop Offset="0" Color="Green"/>
 9                 <GradientStop Offset="1.0" Color="Yellow"/>
10             </LinearGradientBrush.GradientStops>
11         </LinearGradientBrush>
12     </Path.Stroke>
13 </Path>

其中最根本之代码是第3推行。对该数据点的表达如下表。有无明了的地方,先记下来,前边也会为此到,会逐步知晓的。

M 0,200 A 200,200 0 0 1 58.57864,58.57864

M是Path绘图的起点标记

弧的起点坐标为(0,200)

A(arc)是弧的标记

(200,200)表示x轴半径:200;y轴半径:200

圆弧旋转角度[0](有起点和终点,个人感觉这个值并没有什么用)

优势弧的标记[0](否,弧角度小于180)

正负角度标记[1](顺时针画圆)

表示终点,用数学公式计算出来的

(58.57864,58.57864)的乘除格局如下:

风流弧占1/4,故其角度为180*1/4=45度过,黑色点的坐标总结如下图。

图片 4

2.肉色和红弧绘制

 有了点肉色弧绘制作为基础,青色及黑色都是平的道理,下边间接被出绘制三段落弧的代码

 1 <Path Stroke="Yellow" StrokeThickness="30" Width="420" Height="400" StrokeStartLineCap="Round">
 2     <Path.Data>
 3         <PathGeometry Figures="M 0,200 A 200,200 0 0 1 58.57864,58.57864"/>
 4     </Path.Data>
 5 </Path>
 6 <Path Stroke="Green" StrokeThickness="30" Width="420" Height="400">
 7     <Path.Data>
 8         <PathGeometry Figures="M 58.57864,58.57864 A 200,200 0 0 1 341.42136,58.57864" />
 9     </Path.Data>
10 </Path>
11 <Path Stroke="Red" StrokeThickness="30" Width="420" Height="400" StrokeEndLineCap="Round">
12     <Path.Data>
13         <PathGeometry Figures="M 341.42136,58.57864 A 200,200 0 0 1 400,200" />
14     </Path.Data>
15 </Path>

代码的基本点在加粗的数字有的,为保证代码简洁,结构清晰,去丢了逐月变色的拍卖,前边又长。上述代码的效力使下图:

图片 5

找到自己一生一世爱好

6、让指针转起来

指南针的旋,很肯定,是为(200,200)为圆心,各个角度转动,使用了RotateTransform和DoubleAnimation实现转动画。动画的流年长短依照角度大小分配,1度过8单阿秒。转动的角度大小最近凡依据机生成的,在这,我拿旋转动画写在canvas_MouseDown事件之中。C#代码如下:

 1 private void Canvas_MouseDown(object sender, MouseButtonEventArgs e)
 2 {
 3     RotateTransform rt = new RotateTransform();
 4     rt.CenterX = 200;
 5     rt.CenterY = 200;
 6 
 7     this.indicatorPin.RenderTransform = rt;
 8 
 9     angelCurrent = angleNext;
10     Random random = new Random();
11     angleNext = random.Next(180);
12 
13     double timeAnimation = Math.Abs(angelCurrent - angleNext) * 8;
14     DoubleAnimation da = new DoubleAnimation(angelCurrent, angleNext, new Duration(TimeSpan.FromMilliseconds(timeAnimation)));
15     da.AccelerationRatio = 1;
16     rt.BeginAnimation(RotateTransform.AngleProperty, da);

末段效果如下,终于做扫尾了,享受分秒成果!!

图片 6

每每会吸纳不少读者的问话,有打探关于高校如何学习,也时有暴发提问大学生活苦恼,还有抱怨大学里的各样不公正,问我该怎么给。

3、表盘刻度绘制

对于表盘刻度,是由于许多直线段组成,同样好为此XAML语言绘制出。可是这么,代码量有接触好,同时大家啊使手动输入过多缘标值,方法非凡笨,完全没有宣布出C#的功力。下边我先行用XAML语言写有一个刻度(小刻度),以表达原理,然后用C#言语在后台绘出所有刻度,这样便于先前时期代码的珍惜及仪表盘的本性化定做。在20度过角的直线刻度五只坐标的计如下图所示。直线刻度的起源是当圆心为(200,200),半径为180的圆上;终点是在圆心为(200,200),半径为170底圆上。

图片 7

依据上述统计起之结果,写来直线的XAML语言的代码和功能如下:

<Line Stroke="Green" StrokeThickness="2" X1="30.85533" Y1="138.43637" X2="40.25225" Y2="141.85658"/>

图片 8

1.聊刻度绘制

生了下边的基础知识,所有的稍刻度能够挺易绘制出,先看C#的后台代码:

 1 public MainWindow()
 2 {
 3     InitializeComponent();
 4     this.DrawScale();
 5 }
 6 /// <summary>
 7 /// 画表盘的刻度
 8 /// </summary>
 9 private void DrawScale()
10 {
11     for (int i = 0; i <= 180; i += 5)
12     {
13         //添加刻度线
14         Line lineScale = new Line();
15 
16         lineScale.Stroke = new SolidColorBrush(Color.FromRgb(0xFF, 0x00, 0));//使用红色的线
17         lineScale.StrokeThickness = 1;//线条的粗细为1
18         //直线刻度的起点,注意角度转为弧度制
19         lineScale.X1 = 200 - 170 * Math.Cos(i * Math.PI / 180);
20         lineScale.Y1 = 200 - 170 * Math.Sin(i * Math.PI / 180);
21         //直线刻度的终点,注意角度转为弧度制
22         lineScale.X2 = 200 - 180 * Math.Cos(i * Math.PI / 180);
23         lineScale.Y2 = 200 - 180 * Math.Sin(i * Math.PI / 180);
24         //将直线画在Canvas画布上
25         this.gaugeCanvas.Children.Add(lineScale);
26     }
27 }

一律,代码的要点如故以第19,20,22,23行,180-170=10,这些10意味的即便是稍稍刻度的长。画起具有刻度后,效果如下:

图片 9

2.相当刻度绘制

大刻度是各5独小刻度就应运而生相同坏,长度为20px,有了打小刻度的根底,实现以刻度相当容易,只待对DrawScale函数稍加修改,如下面的粗体代码所示

 1         private void DrawScale()
 2         {
 3             for (int i = 0; i <= 180; i += 5)
 4             {
 5                 //添加刻度线
 6                 Line lineScale = new Line();
 7 
 8                 if (i % 25 == 0)//说明已经画了5个小刻度了,加一个大刻度
 9                 {
10                     lineScale.X1 = 200 - 160 * Math.Cos(i * Math.PI / 180);
11                     lineScale.Y1 = 200 - 160 * Math.Sin(i * Math.PI / 180);
12                     lineScale.Stroke = new SolidColorBrush(Color.FromRgb(0x00, 0xFF, 0));
13                     lineScale.StrokeThickness = 3;
14                 }
15                 else
16                 {
17                     lineScale.X1 = 200 - 170 * Math.Cos(i * Math.PI / 180);
18                     lineScale.Y1 = 200 - 170 * Math.Sin(i * Math.PI / 180);
19                     lineScale.Stroke = new SolidColorBrush(Color.FromRgb(0xFF, 0x00, 0));
20                     lineScale.StrokeThickness = 1;
21                 }
22                 //直线刻度的终点,注意角度转为弧度制
23                 lineScale.X2 = 200 - 180 * Math.Cos(i * Math.PI / 180);
24                 lineScale.Y2 = 200 - 180 * Math.Sin(i * Math.PI / 180);
25                 //将直线画在Canvas画布上
26                 this.gaugeCanvas.Children.Add(lineScale);
27             }
28         }

终极兑现之功用使下图所著,已经越来越接近了。

图片 10

高等学校四年,我怀恋是每个人人生路上,最独特的一样段落上。

0、小叙闲言

还要接一个新的类了,再来平等次于达到位机开发。网上有成百上千控件库,做仪表盘(gauge)的也罢未掉,功效也万分强大,可是个人认为库很臃肿,自己虽计划出手来写一个控件库,一是吗念,二是以项目。下边是本人花了一样下午之年华举办出来的,先押效用: 

图片 11
斯表盘当前尚较丑,前边会同样步一步地完善它的,包括各个美化,相信自己可以完成的,加油!!这为是我个人第一次等写博客,我会坚持不渝下去,同时为会努力表述清楚各国一个技术细节。源码地址:https://github.com/Endless-Coding/MyGauge/blob/master/CustomControl.zip

答案就生一个:不断尝试。

1、表盘总体设计

 一个表面,就简单来拘禁,应该由四单有组成,即:表盘外概况、刻度(包括小刻度和大刻度)、刻度值、指针。在炮制的过程被,略微用了部分数学知识,只要用情绪考,都蛮易之。设计外观的历程被,用到了对诺如下知识点。当然也包括一些C#以及WPF的基础知识,假如发未晓的地点,可以看刘铁猛先生的《深切浅出WPF》

表盘外轮廓 刻度 刻度值 指针
Path路径绘图 直线 TextBlock控件 Path路径绘图

据此也,我眷恋自学能力,是本人高校里最为老之收获。

人生永远是学无止境,别想人生之另外时候,都可以生只老师带在您运动。毕业了随后,你碰面发现,要效仿的东西还蛮多,那个时候该怎么惩罚呢?

先是走来寝室,别整天用在寝室追剧玩游戏,这样除了浪费时间外,对您从未任何功利。

说到底,人毕竟要在不断的总与反思中,才会重好的向上。

03

爆发帮带自己形成了同拟属于自己之价值观念,尽管她近日还不够稳定跟成熟;

就出一个智:自学。你切莫亮自己主动去学学,而是等正在人家来喂你,那么,在此便捷前进之社会里,你曾经饿死了。

从前教学老师会同样笔一划教而,甚至连公式都帮您推导一全套,课后还布置各种学业,加以巩固知识。

当你在进行有项事之时段,感到老欢,并且不欲外在引力之递进,也克自然则然地思量去完成它平常,那么,恭喜您,这桩事起不行很的可能性,是若的终生爱好。

具备这一个题目遭到,有一样栽问题被提及的次数最多,就是提问我大学四年里,最可怜的落是呀?每趟都坐字数的来头,没办法给提问者一个惬意的报,回答来报去,总会无意间漏掉几独点,不可能拿核心之感想,周全说了然。

01

直认为,高校的很,在于这擅自,在于其兼容。

这就是说,咋样找到自己无比欢喜的物为?

班老董的不停叮嘱,父母的客气期盼,那几个的样,是您坚定不移上学下的唯一重力。

以上,共勉。

啊盼望看了以下内容后,你吗可以回望一下和好的大学在,对该得及失,做一个相宜的总。

群丁的终生事业,都是交了高校未来,才逐步提升及形成。

然,到了大学后为?课堂时间有限,有些课程一礼拜才上点滴节,除非是无限首要的知识,不然老师上课一般都一笔带过,课后吧几乎未摆设任何作业。

自以高校四年里,最酷的取得,就是领会了好简单码终身爱好:阅读和做。

平日里,即便你无牵挂上了,想偷懒一下,但瞄到边同学埋头刷题的榜样,以及对即未来临的各类周考,月考,你都会晤转拿起书本,在草稿纸上测算各类数学难题。

来以跟室友相处,使自身学会了兼容,见到了各样与团结生活习惯迥异的人头,学会了领各样不同的传统,不高要旁人怎么,也不在乎别人对协调的异样眼光,努力做好协调觉得对之工作,不断为好的来头前行。

自家相信绝大部分人口,在达标高校往日,所有的就学方法,都是填鸭状,被迫式学习。

巧因以大学里,大家所有可能是你及时一生尽轻易之老三顶四年时,所以,那段时,也是咱连追以及尝试,找到自己太喜爱的事业的最佳时机。

往常羁押罢千篇一律本书,说在大家现在的教育体制下,一个总人口想以高考前,找到好的终身爱好,是好拮据的。

随便怎么着,我望当你毕业的这天,拖在行李走来校门的那么一刻,是带来在无悔的心情,笑着同她说再见。

虽然是这样的同样栽状态,导致众多总人口,上了高等高校未来,失去了学习之力量。

立刻四年里,大家不住迷茫着前途,又连挣扎以及折腾着,寻找着属于自己的平长达将来的路。

文/陈午

及时底我们,学习之指标性极其醒目,就是高考,考上一所好高校。

除开以上两沾,大学给自身带来的物还有很多:

02

立马四年里,除了教时外,我在课后,还针对专业课的学识,到体育场馆查阅有关材料,找到补充书,自学老师课堂上从不道的知识点。

不畏她不能成我营生的家伙,也会是自长时间人生受到之同一志快乐添加剂。充分人生的情,提高生命之小幅。

于是乎,明天记念用同篇稿子的时日,来针对斯题材召开一个总,可能照旧无法尽说亮,毕竟大学四年是一样个人成长的顶时光,这段上里拿走的尽多东西,是不可能诉诸于道的。

04

大抵夺与一些协会活动,多出做片生出义之全职,多届体育场馆看个类书籍,我想只有这么,不断折腾,不断认识有人数,不断发现新东西,你才可以尽急忙地发现自己喜欢什么。

相关文章

No Comments, Be The First!
近期评论
    分类目录
    功能
    网站地图xml地图