生活随笔
收集整理的這篇文章主要介紹了
.Net Micro Framework研究—绘图
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
試驗平臺:.Net Micro Framework 模擬器
?
目前在VS2005的環境里,還不支持.Net Micro Framework界面的所見即所得繪制,界面制作有三種方式,一是窗體直接繪圖,二是Panel+形狀對象、三是窗體+控件。第一種做法讓人覺得又回到了DOS時代,回到了SCREEN 12的16色的世界里。
?
窗體當前僅能層現一個控件,用Window.Child屬性去賦值。
支持的控件主要有Panel、Listbox、Image、Text等,其中Panel可包含多個子控件。
支持的形狀對象主要有Ellipse,Line,Polygon,Rectangle等。
支持的繪圖函數主要有:
DrawEllipse,DrawImage,DrawLine,DrawPolygon,DrawRectangle,DrawText,SetPixel;
?
本篇內容主要介紹窗體直接繪圖,其他相關內容在后面的篇章里陸續介紹。
1、新建項目,請選擇window Application,如下圖所示
?
?
模板自帶的代碼,是一個window窗體上包含一個Text控件,控件顯示的內容就是:Hello World!
2、窗體直接繪圖
當前工程,除資源和引用外,其他的代碼都可以刪除,取而代之的是下面的代碼,我嘗試用最簡單的代碼,來表現MF的繪圖能力。
?
using?System; ??using?Microsoft.SPOT; ??using?Microsoft.SPOT.Input; ??using?Microsoft.SPOT.Presentation; ??using?Microsoft.SPOT.Presentation.Controls; ??using?Microsoft.SPOT.Presentation.Media; ??? ??namespace?MFWindow ??{ ??????public?class?Program?:?Microsoft.SPOT.Application ??????{ ??????????public?static?void?Main() ??????????{??? ????????????????????????????WindowsDrawing?win?=?new?WindowsDrawing(); ??????????????win.Width?=?SystemMetrics.ScreenWidth; ??????????????win.Height?=?SystemMetrics.ScreenHeight; ??? ????????????????????????????new?Program().Run(win); ??????????} ????????????????????internal?sealed?class?WindowsDrawing??:Window ??????????{ ??????????????public?override?void?OnRender(DrawingContext?dc) ??????????????{ ??????????????????Color?c?=?ColorUtility.ColorFromRGB(128,?0,255); ??????????????????Brush?b?=?new?SolidColorBrush(c); ??????????????????Pen?p?=?new?Pen(c); ??? ????????????????????????????????????dc.DrawRectangle(b,?p,?0,?0,?Width,?Height);? ??????????????????? ????????????????????????????????????b?=?new?SolidColorBrush(Color.White); ??????????????????p=new?Pen(Color.Black); ??????????????????dc.DrawEllipse(b,?p,?40,20,?40,20); ??? ????????????????????????????????????p?=?new?Pen(?ColorUtility.ColorFromRGB(255,?0,0),5); ??????????????????dc.DrawLine(p,?40,?20,?100,80); ??? ????????????????????????????????????b?=?new?SolidColorBrush(Color.White); ??????????????????p?=?new?Pen(Color.Black,4); ??????????????????dc.DrawRectangle(b,?p,?80,?60,?100,?80); ??? ????????????????????????????????????int[]?points?=?{?10,?230,?30,?210,?0,?180,?30,?130,?50,?130,?80,?180,?50,?210,?70,?230?}; ??????????????????b?=?new?SolidColorBrush(Color.White); ??????????????????p?=?new?Pen(ColorUtility.ColorFromRGB(0,?255,0),3); ??????????????????dc.DrawPolygon(b,p,?points); ??? ????????????????????????????????????c=?ColorUtility.ColorFromRGB(0,?255,?255); ??????????????????dc.DrawText("http://yfsoft.blog.51cto.com",?Resources.GetFont(Resources.FontResources.small),?c,?180,?20); ??? ????????????????????????????????????dc.DrawImage(Resources.GetBitmap(Resources.BitmapResources.YFMSMVP),230,130); ??????????????} ??????????} ??????} ??} ?? 程序運行后的畫面如下:
?
如上面代碼中的注釋所示,DrawEllipse、DrawLine、DrawPolygon函數對刷子填充和pen的寬度都不支持,目前僅最簡單的DrawRectangle函數實現的最好,這說明微軟的SDK還是很不完善的,就像串口操作僅支持波特率修改,而不支持奇偶校驗、數據位修改一樣。估計微軟推出SDK3.0或SDK4.0的時候,我想.Net Micro Framework才是成熟的時候。
?
?
總結
以上是生活随笔為你收集整理的.Net Micro Framework研究—绘图的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。