程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> .NET實例教程 >> .Net Micro Framework研究—繪圖(1)

.Net Micro Framework研究—繪圖(1)

編輯:.NET實例教程

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

 

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

 

窗體當前僅能層現一個控件,用Window.Child屬性去賦值

支持的控件主要有PanelListboxImageText等,其中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 MFWind

ow

{

    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);

        }

        //從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);

 

                //繪線(線的粗細參數無效)

                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://blog.csdn.Net/yefanqiu", Resources.GetFont(Resources.FontResources.small), c, 180, 20);

 

                //繪制位圖(支持bmp,gif,jpg,png等等圖片)

                dc.DrawImage(Resources.GetBitmap(Resources.BitmapResources.YFMSMVP),230,130);

            }

        }

    }

}

程序運行後的畫面如下:

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

 

 

  1. 上一頁:
  2. 下一頁: