电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

Net Micro Framework中的Shapes命名空间


发布日期:2018/2/16
 

试验平台Net Micro Framework 模拟器

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

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

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

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

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

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

public enum HorizontalAlignment

{

Left =

Center =

Right =

Stretch =

}

public enum VerticalAlignment

{

Top =

Center =

Bottom =

Stretch =

}

SetMargin方法设置边界空白大小

完整的代码如下

using System;

using MicrosoftSPOT;

using MicrosoftSPOTInput;

using MicrosoftSPOTPresentation;

using MicrosoftSPOTPresentationControls;

using MicrosoftSPOTPresentationMedia;

using MicrosoftSPOTPresentationShapes;

namespace MFWindow

{

public class Program : MicrosoftSPOTApplication

{

public static void Main()

{

//创建窗体

WindowsDrawing win = new WindowsDrawing();

//程序运行

new Program()Run(win);

}

internal sealed class WindowsDrawing : Window

{

public WindowsDrawing()

{

thisWidth = SystemMetricsScreenWidth;

thisHeight = SystemMetricsScreenHeight;

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

//StackPanel panel = new StackPanel(OrientationVertical);

StackPanel panel = new StackPanel(OrientationHorizontal);

//设置边界空白

panelSetMargin();

//设置对象堆叠的方式

panelHorizontalAlignment = HorizontalAlignmentCenter;

panelVerticalAlignment = VerticalAlignmentCenter;

thisChild = panel;

//添加文本

Text txt = new Text(ResourcesGetFont(ResourcesFontResourcessmall) yefan);

//不能设置lefttop坐标

txtWidth = ;

txtHeight = ;

panelChildrenAdd(txt);

//添加不同的形状对象

Shape[] shapes = new Shape[]

{

new Ellipse()

new Line()

new Polygon(new Int[] { })

new Rectangle()

};

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

foreach (Shape s in shapes)

{

sFill = new SolidColorBrush(ColorUtilityColorFromRGB( ));

sStroke = new Pen(ColorBlack );

//不能设置lefttop坐标

sHeight = ;

sWidth = ;

panelChildrenAdd(s);

}

}

}

}

}

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

)thiswidth=; height=>

image onmousewheel=javascript:return big(this) border= alt= src=http://imgeducitycn/img_///jpg width= onload=javascript:if(thiswidth>)thiswidth=; height=>

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

上一篇:浅谈如何使用Lambda表达式做抽象代表

下一篇:Microsoft Source Analysis for