叶帆工作室

嵌入式开发爱好者(十年开发经验,精通C/C++/VC/VB/C#...)

用户操作
[即时聊天] [发私信] [加为好友]
叶帆ID:yefanqiu
536439次访问,排名80好友0人,关注者224
微软MVP / CSDN 2008十大MVB/MSDN中文技术论坛版主
yefanqiu的文章
原创 218 篇
翻译 0 篇
转载 3 篇
评论 1099 篇
叶帆的公告
本博客原创文章,作者保留一切权利,需经作者同意后方可转载,转载时 请注明[叶帆工作室]及文章链接。yefan@vip.sina.com
【简介】叶帆[微软MVP]
【文章】叶帆文章列表
【软件】叶帆共享软件列表
最近评论
BinYu:我用的是vista home basic sp1,但vs2005强行装不上去,请帮忙分析一下,qq:811344767,先谢谢了
wjh6877:算法想好了吗?

没有就是空话
一生好人:其实我也想来正版,但生活逼人,没办法啊
fox23:something like java card;-)
wwqqha:不错不错
文章分类
收藏
    相册
    叶帆照片
    【叶帆软件】
    [01]VB源码之友(V2.1.548)
    [02]API浏览器.net(V5.0)
    [03]叶帆成语词典(V2.0.8)
    [04]叶帆密码库(V1.2.8)
    【叶帆资源】
    DAO 2.0引擎
    叶帆快速通道
    MSDN-MVP
    Windows Embedded 专题
    中文MSDN
    叶帆圈子--工业自动化
    叶帆工作室(博客园)
    叶帆工控--工业自动化
    叶帆群组--工业应用开发
    微软中文技术论坛
    微软硬件创新中心(HIC)
    瑞康社区论坛
    叶帆友情链接
    张欣
    枕善居
    莫依
    葛涵涛
    郑建
    陈辉
    马宁
    马骐
    魏涛序
    黎波
    存档
    订阅我的博客
    XML聚合  FeedSky
    订阅到鲜果
    订阅到Google
    订阅到抓虾
    订阅到BlogLines
    订阅到Yahoo
    订阅到GouGou
    订阅到飞鸽
    订阅到Rojo
    订阅到newsgator
    订阅到netvibes

    原创 .Net Micro Framework研究—Shapes命名空间收藏

    新一篇: Windows Mobile 5.0编程—奥运场馆速查 | 旧一篇: .Net Micro Framework研究—绘图

     

    试验平台:.Net Micro Framework 模拟器

     

    Microsoft.SPOT.Presentation.Shapes命名空间下,包含几个形状对象,主要有EllipseLinePolygonRectangle,同样也只有Rectangle实现的最好,其他形状都不支持填充色,虽然每个对象都有Fill属性。

    让人奇怪的是,每个形状对象都不能设置lefttop坐标,仅能设置宽度和高度,用起来很不习惯。

    StackPanel类是Panel的派生类,从字面意思上看,就是可以堆叠的面板。意如其名,它可以包含多个子对象,不过每一对象都不能重叠,以特有的方式堆叠在一起。

    有如下几个属性方法控制堆叠方式:

    1、              Orientation属性,有两种方式:Orientation.HorizontalOrientation.Vertical。设置该属性后,StackPanel的子对象的坐标系就会发生变化(很可惜字体的方向并没有从根本上改变)。

    2、              HorizontalAlignmentVerticalAlignment属性,设置子对象的堆叠方式。枚举定义如下。

        public enum HorizontalAlignment

        {

            Left = 0,

            Center = 1,

            Right = 2,

            Stretch = 3,

    }

        public enum VerticalAlignment

        {

            Top = 0,

            Center = 1,

            Bottom = 2,

            Stretch = 3,

     }

    3、               SetMargin方法,设置边界空白大小。

       

        完整的代码如下,

    using System;

    using Microsoft.SPOT;

    using Microsoft.SPOT.Input;

    using Microsoft.SPOT.Presentation;

    using Microsoft.SPOT.Presentation.Controls;

    using Microsoft.SPOT.Presentation.Media;

    using Microsoft.SPOT.Presentation.Shapes;

     

    namespace MFWindow

    {

        public class Program : Microsoft.SPOT.Application

        {

            public static void Main()

            {  

                //创建窗体

                WindowsDrawing win = new WindowsDrawing();         

                //程序运行

                new Program().Run(win);

            }

           

            internal sealed class WindowsDrawing : Window

            {

                public  WindowsDrawing()

                {

                    this.Width = SystemMetrics.ScreenWidth;

                    this.Height = SystemMetrics.ScreenHeight;

     

                    //可设置显示方向(水平,垂直)

                    //StackPanel panel = new StackPanel(Orientation.Vertical);

                    StackPanel panel = new StackPanel(Orientation.Horizontal);

                   

                    //设置边界空白

                    panel.SetMargin(10);

     

                    //设置对象堆叠的方式

                    panel.HorizontalAlignment = HorizontalAlignment.Center;

                    panel.VerticalAlignment = VerticalAlignment.Center;

                                 

                    this.Child = panel;

     

                    //添加文本

                    Text txt = new Text(Resources.GetFont(Resources.FontResources.small), "yefan");

     

                    //不能设置left,top坐标

                    txt.Width = 100;

                    txt.Height = 30;

                    panel.Children.Add(txt);

                   

                    //添加不同的形状对象

                    Shape[] shapes = new Shape[]

                                    {

                                         new Ellipse(),

                                         new Line(),

                                         new Polygon(new Int32[] { 0, 0,    10, 0,    10, 10,    0, 10 }),

                                         new Rectangle()

                                    };

     

                    //设置形状对象必要的参数(各对象不能重叠,只能堆叠在一起)

                    foreach (Shape s in shapes)

                    {

                        s.Fill = new SolidColorBrush(ColorUtility.ColorFromRGB(0, 255, 0));

                        s.Stroke = new Pen(Color.Black, 2);

     

                        //不能设置left,top坐标

                        s.Height = 40;

                        s.Width = 40;

     

                        panel.Children.Add(s);

                    }             

                }

            }

        }

    }

     

    仅修改这句代码 StackPanel panel = new StackPanel(Orientation.Horizontal);中的参数就可以实现两种不同的效果,如下面两图所示: 

     

     

    总的来说,我觉得MF提供的图像对象还很不完善,不仅一些基本功能没有完成(如填充、线宽),并且无法设置形状对象的绝对坐标(left,top),同时总类也特别少,希望以后的版本中能有很大的提升。

    发表于 @ 2007年11月06日 14:37:00|评论(loading...)|编辑

    新一篇: Windows Mobile 5.0编程—奥运场馆速查 | 旧一篇: .Net Micro Framework研究—绘图

    评论

    #upto 发表于2007-11-12 09:35:47  IP: 116.60.30.*
    写得很精彩,继续!
    #wyx0604 发表于2007-12-01 18:42:46  IP: 59.61.16.*
    不错
    发表评论  


    登录
    Csdn Blog version 3.1a
    Copyright © 叶帆