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

先看一個截圖:

繪製了一些基本形狀。

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

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

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

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

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

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

後面再一一補上。

转载于:https://www.cnblogs.com/lin277541/p/5059489.html

【WIN10】WIN2D——基本圖形的繪製相关推荐

  1. [EmguCV|C#]使用CvInvoke自己繪製色彩直方圖-直方圖(Hitsogram)系列(4)

    2014-02-06 10325 0 C# 檢舉文章 過年結束了,雖然還是學生所以其實還有兩個禮拜的假期,不過為了不讓自己發慌,趁著假期多利用充實自己,所以提早回到開工狀態,而這次總算要把一直說的自己 ...

  2. 從turtle海龜動畫 學習 Python - 高中彈性課程系列 10.1 藝術畫 python繪製天然雪花結晶

    本篇主要是討論用 python 模擬自然界的雪花結晶形狀, (注意: 非網路上常提到的 雪花算法). "Talk is cheap. Show me the code." ― Li ...

  3. (原創) 如何讓Linux開機時,不要在圖形介面顯示開機訊息? (OS) (Linux) (CentOS)

    Abstract 玩Linux的成就感之一,就是開機時看到每個硬體裝置和服務一個一個顯示[OK],但進入X Window後,一些開機訊息會顯示在圖形介面中,有沒有辦法使用文字模式完整的顯示開機訊息呢? ...

  4. 用免費的電腦資源協助數學的教學,學習與探索_復華中學教師營_中山大學應數系高中數學人才班_2021

    "Talk is cheap. Show me the code." ― Linus Torvalds 摘要: 直到, 在學習 R 語言的過程, 才發現有 Markdown 這種文 ...

  5. GeoJson Style

    GeoJSON 簡介 GeoJSON 是一種對地理資訊結構進行編碼的格式,基於 JavaScript 物件標記的地理空間資訊資料交換格式 ( 所以才會是 Geo + json ),GeoJSON 支援 ...

  6. Real-time hatching報告+實現代碼和效果

    1.論文解讀 論文標題為實時的畫影線,實時的畫影線的主要作用可以用於產生素描畫的效果.該論文屬於計算機圖形學中的圖像處理技術和紋理技術. 根據摘要,論文可以被分為四個部分.該論文通過分析已有技術中的問 ...

  7. leach协议matlab仿真代码

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

  8. android涂鸦程序(在图像上绘制)

    界面首先由一个choosePicture的按钮,用来从MediaStore取得图片,取得之后,可以在图片上进行绘画,再点击savebutton就可以保存图片到MediaStore. 界面xml文件: ...

  9. android实现在照片上绘制涂鸦的方法,android涂鸦程序(在图像上绘制)

    界面首先由一个choosePicture的按钮,用来从MediaStore取得图片,取得之后,可以在图片上进行绘画,再点击savebutton就可以保存图片到MediaStore. 界面xml文件: ...

最新文章

  1. 媒体查询漫谈——@media Queries
  2. python用海伦公式求面积_用带参数的宏定义,通过海伦公式求三角形的面积
  3. R语言广义线性模型函数GLM、glm函数构建泊松回归模型、模型中存在过离散(Overdispersion)、则将连接函数从possion函数替换为quasipoisson函数重新构建泊松回归模型
  4. 基于vue-cli、elementUI的Vue超简单入门小例子
  5. java Ext安装_eclipse中ext插件安装方法
  6. SpringBoot最简单服务配置
  7. C# 创建一个简单的WebApi项目
  8. 科沃斯机器人阿尔法怎么样_科沃斯阿尔法扫地机器人,实用的才是最好的
  9. 选举学生会(洛谷P1271题题解,Java/C++语言描述)
  10. 国家存储器基地项目二期于武汉开工 月规划产能20万片
  11. 64位/32位操作系统ODBC的设定方法
  12. 一次函数(正比例函数)公式的解析式与C语言代码实现
  13. QTP自动化测试进阶
  14. Android webm转mp4,android - 如何记录屏幕并输出视频格式为webm并由vp9编码? - 堆栈内存溢出...
  15. java实现一个电子书下载系统
  16. 《C++ Primer 第5版》-12.2动态数组-康奈尔笔记
  17. PS_01_基本操作
  18. 爬虫实战:遇上gb2312编码的网页
  19. 仿淘宝 打开app时识别淘口令和解析保存到本地的带二维码图片的网址
  20. C#实现万年历(农历、节气、节日、星座、属相、生肖、闰年等)

热门文章

  1. python打卡摄像头黑屏_500行Python代码打造刷脸考勤系统 !
  2. linux 上传网页,Windows和Linux主机FTP上传网页注意事项
  3. java中的基本数据类型_Java中的基本数据类型和引用数据类型
  4. 数组输出黑科技----fwrite()
  5. Linux(CenterOS 6.4)下安装jdk1.6
  6. 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点
  7. 基于决策树的多分类_R中基于决策树的糖尿病分类—一个零博客
  8. python文本结构化处理_在Python中标记非结构化文本数据
  9. 李嘉诚那么有钱,为什么还要把国内很多资产卖掉?
  10. 民间借贷利息多少才合法?