【WIN10】WIN2D——基本圖形的繪製
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——基本圖形的繪製的更多相关文章
- 【WIN10】WIN2D——繪製文字
先看下截圖: 做了幾個效果:普通.倒影.陰影.歌詞. 普通效果代碼: private void normal_Draw(Microsoft.Graphics.Canvas.UI.Xaml.Canvas ...
- 使用Astah繪製UML圖形(转)
http://www.dotblogs.com.tw/clark/archive/2015/02/12/149483.aspx
- [EmguCV|WinForm] 使用EmguCV內建直方圖工具繪製直方圖(Histogram)-直方圖(Histogram)系列 (1)
https://dotblogs.com.tw/v6610688/archive/2013/12/20/emgucv_draw_histogram_histogrambox_histogramview ...
- 【WIN10】文本圖標
在Storyboard動畫板中,我使用文本顯示了一個“心”形.在這裡,我將介紹一下文本圖標. 1.Segoe MDL2 Assets 首先,它必須使用字體:Segoe MDL2 Assets 其次,它 ...
- leach协议matlab仿真代码
http://www.ilovematlab.cn/thread-177006-1-1.html LEACH協議clear;%清除內存變量 xm=100;%x軸範圍ym=100;%y軸範圍 sink. ...
- Chart.js 與 ASP.NET MVC 整合應用
Chart.js 是一套開放原始碼的「圖表」繪製函式庫,和其他第三方的圖表工具相比,Chart.js 的特色如下: 支援 HTML 5.響應式網頁 (RWD, Responsive Web Desig ...
- [R] 繪圖 Par 函数
本篇內文主引用 https://zhuanlan.zhihu.com/p/21394945 之內容再稍加整理並參照下方有用資源 [rdocumentation] https://www.rdocume ...
- PCB成型製程介紹
PCB成型製程在電子構裝中所扮演的角色 下圖是電腦主機的內部組成 我們將以插在主機板上的一片 USB擴充卡來說明PCB成型製 程在電子構裝中所扮演的角色 PCB成型製程的子製程 USB擴充卡要插入主機 ...
- 用OpenSCAD設計特製的遊戲骰子
一開始先製作一個簡單的立方體.定義一個變量「cube_size」,然後使用下圖的立方體程式.center=true的設定可讓立方體位於起始模型的正中央. 為你在OpenSCAD創造的物體加上不同顏色是 ...
随机推荐
- vue axios的使用
详细可以看:https://www.kancloud.cn/yunye/axios/234845 这里介绍日常使用得比较多的get和post: import axios from 'axios' // ...
- vue子组件的自定义事件
父子组件的信息传递无碍就是父组件给子组件传值(props和$attrs)和父组件触发子组件的事件($emit) 之前已经谈过了父组件给子组件传值了,现在来说说父组件触发子组件的自定义事件吧-- 实际上 ...
- Flex 程序执行顺序!
Flex 执行加载过程会有几个概念:preloader, SystemManager, Flex Application! flex 界面初始化时,看到的 Loading 加载条,那是 flex 自动 ...
- Informatica学习:3、用户创建与权限管理
环境:win7 下安装Informatica 9.6.1 服务器端与客户端作为学习之用,Linux大同小异 一.用户创建(服务器端) 1.登陆admin console (1)打开Admin Cons ...
- Loadrunner如何进行有效的IP欺骗
柠檬班的清风同学某天紧急求助如何搞IP欺骗,端午节后,抽时间把这个事情搞定啦!跟大家详细的讲讲IP欺骗的运用和理解. 一.什么是IP欺骗 给你客户端的IP地址加个马甲,让服务器端识别不到是同一个IP地 ...
- mybatis输入输出映射——(五)
0.#{}与${}区别 #{}实现的是向prepareStatement中的预处理语句中设置参数值,sql语句中#{}表示一个占位符即?. <!-- 根据id查询用户信息 --> < ...
- FTP主动/被动原理
FTP 主动模式 1.客户端用大于1024的高位端口发起初始化连接到vsftp服务器的21端口 2.vsftp服务器的21端口主动与客户端大于1024的高位端口建立控制连接 3.vsftp服务器的20 ...
- springcloud搭建服务注册中心与服务发现
1.创建服务注册中心 创建一个普通的Spring Boot工程 首先我们需要创建一个普通的Spring Boot工程,命名为eureka-server,普通到什么程度呢?就是一个starter都不需要 ...
- Kotlin 语言下设计模式的不同实现
偶然在 Github 上看到 dbacinski 写的 Kotlin 语言下设计模式的不同实现(这里的不同是相对于 Java 语言的),有些实现非常好,但是有些实现的例子不是很赞同.所以自己写了 Ko ...
- ssh隐藏的sftp功能的使用
sftp是Secure File Transfer Protocol的缩写,安全文件传送协议.可以为传输文件提供一种安全的加密方法.sftp 与 ftp 有着几乎一样的语法和功能.SFTP 为 SSH ...