DEMO下載地址:http://yunpan.cn/c3iNuHFFAcr8h (提取码:8e48)

先看一個截圖:

繪製了一些基本形狀。

DEMO的繪製代碼都非常簡單,不想在博客裡細說了,看代碼更為清晰些。

可能繪製扇形的代碼有些麻煩些。

微軟是使用鐘錶的轉動方向(順時針)作為弧度運轉方向的,所以角度30度,是會在x座標下的,而不是通常的在x座標上面。

帖一下畫鐘錶的代碼,是非常簡單的:

        private void clock_Draw(CanvasControl sender, CanvasDrawEventArgs args)
{
float radius = (float)sender.ActualWidth / - ;
Vector2 center = new Vector2((float)sender.ActualWidth / , (float)sender.ActualWidth / ); for (int i = ; i < ; ++i)
{
int borderSize = ;
Vector2 begin = new Vector2(radius + center.X - , center.Y);
Vector2 end = new Vector2(radius + center.X, center.Y); if (i % == )
{
borderSize = ;
begin = new Vector2(center.X + radius - , center.Y);
}
else if (i % == )
{
borderSize = ;
begin = new Vector2(radius + center.X - , center.Y);
} args.DrawingSession.Transform = Matrix3x2.CreateRotation(TimeValue2Radion(i, ), center);
args.DrawingSession.DrawLine(begin, end, Color.FromArgb(, , , ), borderSize);
} args.DrawingSession.DrawCircle(center, radius, Color.FromArgb(, , , ), ); // 結點處是圓,指向處為三角
CanvasStrokeStyle lineStyle = new CanvasStrokeStyle();
lineStyle.StartCap = CanvasCapStyle.Round;
lineStyle.EndCap = CanvasCapStyle.Triangle; // 時針
float hours = DateTime.Now.Hour % + DateTime.Now.Minute / 60.0f + DateTime.Now.Second / 60.0f / 24.0f; // 12小時制
float intervalHours = hours - 3.0f; // 3點是0度
float hourRadian = TimeValue2Radion(intervalHours, );
args.DrawingSession.Transform = Matrix3x2.CreateRotation(hourRadian, center);
args.DrawingSession.DrawLine(center, new Vector2(center.X + , center.Y), Color.FromArgb(, , , ), , lineStyle); // 分針
float minutes = DateTime.Now.Minute+ DateTime.Now.Second / 60.0f;
float intervalMinutes = minutes - ; // 15分钟是0度
float minuteRadian = TimeValue2Radion(intervalMinutes, );
args.DrawingSession.Transform = Matrix3x2.CreateRotation(minuteRadian, center);
args.DrawingSession.DrawLine(center, new Vector2(center.X + , center.Y), Color.FromArgb(, , , ), , lineStyle); // 秒針
float seconds = DateTime.Now.Second;
float intervalSeconds = seconds - ; // 15秒是0度
float secondRadian = TimeValue2Radion(intervalSeconds, );
args.DrawingSession.Transform = Matrix3x2.CreateRotation(secondRadian, center);
args.DrawingSession.DrawLine(center, new Vector2(center.X + , center.Y), Color.FromArgb(, , , ));
} private float TimeValue2Radion(float intervalTime, int total)
{
return intervalTime / total * * (float)Math.PI / ;
}

因為今天只寫了這麼一個例子,就先發一個了。

後面再一一補上。

【WIN10】WIN2D——基本圖形的繪製的更多相关文章

  1. 【WIN10】WIN2D——繪製文字

    先看下截圖: 做了幾個效果:普通.倒影.陰影.歌詞. 普通效果代碼: private void normal_Draw(Microsoft.Graphics.Canvas.UI.Xaml.Canvas ...

  2. 使用Astah繪製UML圖形(转)

    http://www.dotblogs.com.tw/clark/archive/2015/02/12/149483.aspx

  3. [EmguCV|WinForm] 使用EmguCV內建直方圖工具繪製直方圖(Histogram)-直方圖(Histogram)系列 (1)

    https://dotblogs.com.tw/v6610688/archive/2013/12/20/emgucv_draw_histogram_histogrambox_histogramview ...

  4. 【WIN10】文本圖標

    在Storyboard動畫板中,我使用文本顯示了一個“心”形.在這裡,我將介紹一下文本圖標. 1.Segoe MDL2 Assets 首先,它必須使用字體:Segoe MDL2 Assets 其次,它 ...

  5. leach协议matlab仿真代码

    http://www.ilovematlab.cn/thread-177006-1-1.html LEACH協議clear;%清除內存變量 xm=100;%x軸範圍ym=100;%y軸範圍 sink. ...

  6. Chart.js 與 ASP.NET MVC 整合應用

    Chart.js 是一套開放原始碼的「圖表」繪製函式庫,和其他第三方的圖表工具相比,Chart.js 的特色如下: 支援 HTML 5.響應式網頁 (RWD, Responsive Web Desig ...

  7. [R] 繪圖 Par 函数

    本篇內文主引用 https://zhuanlan.zhihu.com/p/21394945 之內容再稍加整理並參照下方有用資源 [rdocumentation] https://www.rdocume ...

  8. PCB成型製程介紹

    PCB成型製程在電子構裝中所扮演的角色 下圖是電腦主機的內部組成 我們將以插在主機板上的一片 USB擴充卡來說明PCB成型製 程在電子構裝中所扮演的角色 PCB成型製程的子製程 USB擴充卡要插入主機 ...

  9. 用OpenSCAD設計特製的遊戲骰子

    一開始先製作一個簡單的立方體.定義一個變量「cube_size」,然後使用下圖的立方體程式.center=true的設定可讓立方體位於起始模型的正中央. 為你在OpenSCAD創造的物體加上不同顏色是 ...

随机推荐

  1. Spring RedisTemplate操作-通道操作(10)

    @Autowired @Resource(name = "redisTemplate") private RedisTemplate<String, String> r ...

  2. Anaconda+django写出第一个web app(八)

    今天来实现网站的登入和登出功能. 首先我们需要在urls.py中添加路径,注意此处的路径和在导航栏中设置的文字路径保持一致: from django.urls import path from . i ...

  3. CF232C Doe Graphs

    传送门 Solution:  (不理解时对着图研究一下就清楚啦!!!) sm[i]为|D(i)|  (x,y,n)为x,y在D(n)中的最短路 已知sm[i-1]+1为D(i)的割点 于是x-y的最短 ...

  4. 图解Android View的scrollTo(),scrollBy(),getScrollX(), getScrollY()

    https://blog.csdn.net/bigconvience/article/details/26697645 Android系统手机屏幕的左上角为坐标系,同时y轴方向与笛卡尔坐标系的y轴方向 ...

  5. 【比赛游记】NOIP2017游记

    身为FJ的选手,在师大附中AHSOFNU考试,环境很不错,考得也还可以吧...[考的并不好] 不过比赛前都在划水233333 另:看到这篇博客的OIer们一定要评论啊! Day1的中午,因为穿了短袖去 ...

  6. QTP图片验证/图片比较/二进制流对比法

    图片验证主要是文件对比,其中我们可以利用二进制的方法读取图片信息,然后进行对比,达到对比的效果,本例子利用fso对象的文件流的方法实现,代码如下: Public Function CompareFil ...

  7. ASP.NET中Request.ApplicationPath、Request.FilePath、Request.Path、.Request.MapPath、

    1.Request.ApplicationPath->当前应用的目录    Jsp中, ApplicationPath指的是当前的application(应用程序)的目录,ASP.NET中也是这 ...

  8. Using MongoDB in C#

    In order to use MongoDB in C#, you can import MongoDB C# Driver to your project. It's best to create ...

  9. JS两种事件的触发方式

    一.入侵式触发方式 <input type="button" id="one" onclick="事件" /> 二.非入侵式触发 ...

  10. RocketMQ 部署

    1. 下载 下载RocketMQwget https://github.com/alibaba/RocketMQ/releases/download/v3.2.6/alibaba-rocketmq-3 ...