日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > asp.net >内容正文

asp.net

.Net Micro Framework研究—绘图

發(fā)布時間:2025/4/5 asp.net 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 .Net Micro Framework研究—绘图 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

試驗平臺:.Net Micro Framework 模擬器

?

目前在VS2005的環(huán)境里,還不支持.Net Micro Framework界面的所見即所得繪制,界面制作有三種方式,一是窗體直接繪圖,二是Panel+形狀對象、三是窗體+控件。第一種做法讓人覺得又回到了DOS時代,回到了SCREEN 12的16色的世界里。

?

窗體當(dāng)前僅能層現(xiàn)一個控件,用Window.Child屬性去賦值。

支持的控件主要有Panel、Listbox、Image、Text等,其中Panel可包含多個子控件。

支持的形狀對象主要有Ellipse,Line,Polygon,Rectangle等。

支持的繪圖函數(shù)主要有:

DrawEllipse,DrawImage,DrawLine,DrawPolygon,DrawRectangle,DrawText,SetPixel;

?

本篇內(nèi)容主要介紹窗體直接繪圖,其他相關(guān)內(nèi)容在后面的篇章里陸續(xù)介紹。

1、新建項目,請選擇window Application,如下圖所示

?


?

模板自帶的代碼,是一個window窗體上包含一個Text控件,控件顯示的內(nèi)容就是:Hello World!

2、窗體直接繪圖

當(dāng)前工程,除資源和引用外,其他的代碼都可以刪除,取而代之的是下面的代碼,我嘗試用最簡單的代碼,來表現(xiàn)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() ?
  • ?
  • ????????{??? ?
  • ?
  • ????????????//創(chuàng)建窗體 ?
  • ?
  • ????????????WindowsDrawing?win?=?new?WindowsDrawing(); ?
  • ?
  • ????????????win.Width?=?SystemMetrics.ScreenWidth; ?
  • ?
  • ????????????win.Height?=?SystemMetrics.ScreenHeight; ?
  • ?
  • ? ?
  • ?
  • ????????????//程序運行 ?
  • ?
  • ????????????new?Program().Run(win); ?
  • ?
  • ????????} ?
  • ?
  • ????????//從Window派生一個類,重載OnRender方法 ?
  • ?
  • ????????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); ?
  • ?
  • ? ?
  • ?
  • ????????????????//繪線(線的粗細參數(shù)無效) ?
  • ?
  • ????????????????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); ?
  • ?
  • ? ?
  • ?
  • ????????????????//繪制位圖(支持bmp,gif,jpg,png等等圖片) ?
  • ?
  • ????????????????dc.DrawImage(Resources.GetBitmap(Resources.BitmapResources.YFMSMVP),230,130); ?
  • ?
  • ????????????} ?
  • ?
  • ????????} ?
  • ?
  • ????} ?
  • ?
  • } ?
  • ?
  • 程序運行后的畫面如下:


    ?

    如上面代碼中的注釋所示,DrawEllipse、DrawLine、DrawPolygon函數(shù)對刷子填充和pen的寬度都不支持,目前僅最簡單的DrawRectangle函數(shù)實現(xiàn)的最好,這說明微軟的SDK還是很不完善的,就像串口操作僅支持波特率修改,而不支持奇偶校驗、數(shù)據(jù)位修改一樣。估計微軟推出SDK3.0或SDK4.0的時候,我想.Net Micro Framework才是成熟的時候。

    ?

    ?

    總結(jié)

    以上是生活随笔為你收集整理的.Net Micro Framework研究—绘图的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。