.Net Micro Framework官方图形库是WPF,由于目前ST Cortex-M3开发板RAM太小,最大才512K(常见是128K或256k),并且Cortex-M3的CPU主频也不太高,运行WPF图形框架显得过于重了,所以我这边推出了轻量级图形库TinyGUI(此外,我也推出了一个WinForm的框架,和.Net Framework保持兼容,适合喜欢WinForm开发的用户,不过这个不是轻量级的,参见《开源System.Windows.Forms库,让.Net Micro Framework界面开发和上位机一样简单》)。

TinyGUI的相关介绍,在我早期的一篇Blog中已经有介绍了,所以不知道TinyGUI为何物的读者,可以先看看这篇文章《【玩转.Net MF – 06】为Cortex-M3打造轻量级TinyGUI(上)》。

TinyGUI接口非常简单,相关声明如下:

public sealed class Graphics

{

public Graphics();

public static void Clear(uint color);

public static void DrawEllipse(int x, int y, int width, int height, uint color);

public static void DrawImage(int x, int y, byte[] bytData);

public static void DrawImageEx(int x, int y, byte[] bytData, uint MaskColor);

public static void DrawLine(int x1, int y1, int x2, int y2, uint color);

public static void DrawRectangle(int x, int y, int width, int height, uint color);

public static void DrawString(int x, int y, string s, uint color);

public static void FillEllipse(int x, int y, int width, int height, uint color);

public static void FillRectangle(int x, int y, int width, int height, uint color);

public static uint GetPixel(int x, int y);

public static void Print(string str);

public static void SetPixel(int x, int y, uint color);

}

相关绘图示例如下(这就是我以前提供图形示例pe文件的源码)

public static void Main()

{

uint[] colors = new uint[]{Color.Black, Color.Red,Color.Green, Color.Orange,Color.Yellow, Color.Brown,Color.Purple,Color.Gray,

Color.DarkGray, Color.LightGray,Color.Blue, Color.Magenta,Color.Cyan, Color.White,Color.LightGreen};

Graphics.Clear(Color.Blue);

int x, y, width, height,c;

long index = 0;

Random rnd = new Random();

while (true)

{

x = rnd.Next(239);

width = rnd.Next(239 - x);

y = rnd.Next(319);

height = rnd.Next(319 - y);

c = rnd.Next(colors.Length-1);

switch (index % 3)

{

case 0:

if (rnd.Next(10) > 5)

Graphics.DrawRectangle(x, y, width, height, colors[c]);

else

Graphics.FillRectangle(x, y, width, height, colors[c]);

break;

case 1:

if (rnd.Next(10) > 5)

Graphics.DrawEllipse(x, y, width, height, colors[c]);

else

Graphics.FillEllipse(x, y, width, height, colors[c]);

break;

case 2:

Graphics.DrawLine(x, y, rnd.Next(239), rnd.Next(319), colors[c]);

break;

}

Graphics.FillRectangle(0, 300, 239, 19, Color.White);

Graphics.DrawString(2, 303, (index++).ToString(), Color.Blue);

Thread.Sleep(50);

}

}

代码比较简单,这里我就不过多解释了。需要说明的是,该程序不能直接在模拟器中运行,并且需要引用System.TinyGUI.dll库。

运行后的结果如下:

至于如何制作和显示TinyBMP格式的位图我们下篇文章再进行介绍。

-----------------------------------------------------------------------------------------

【低价开发板】http://item.taobao.com/item.htm?id=7117999726 
源码下载:http://www.sky-walker.com.cn/yefan/MFV40/SourceCode/TinyGUI_Sample.rar
文章参考: 《.Net Micro Framework 快速入门》
中文讨论组:http://space.cnblogs.com/group/MFSoft/
本文转自yefanqiu51CTO博客,原文链接:http://blog.51cto.com/yfsoft/343817,如需转载请自行联系原作者

【STM32 .Net MF开发板学习-03】TinyGUI绘图示例相关推荐

  1. 【STM32 .Net MF开发板学习-02】GPIO测试

    前段时间我借用市面上现成的Corex-M3开发板,打造了最低价的.Net Micro Framework开发板(参见<免费发放firmwave,打造史上最低价.Net MF开发板>),在此 ...

  2. 【STM32 .Net MF开发板学习-28】中文显示(WPF方式)

    在<为Cortex-M3打造轻量级TinyGUI>中我们提到.NET MF的官方图形库为WPF,考虑到内存的限制和CPU的性能,所以我们开发了TinyGUI库,并在<TinyGUI绘 ...

  3. 【STM32 .Net MF开发板学习-17】Wifi遥控智能小车

    恰好以前购买的一个PDA含Wifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了, ...

  4. 【STM32 .NET MF开发板学习-29】摄像头蓝牙图像远程获取

    目前生产串口摄像头的厂家有很多,每家的通信协议也不同,所以针对不同的摄像头都必须编写相对应的摄像头驱动程序. 最早做医疗项目的时候,开发过一款串口摄像头的驱动,不过是配合TinyIOs而使用,并没有把 ...

  5. 【STM32 Net MF开发板学习-27】GPRS通信实现

    GPRS是General Packet Radio Service(通用分组无线服务技术)的简称,它是GSM移动电话用户可用的一种移动数据业务.GPRS和以往连续在频道传输的方式不同,是以封包(Pac ...

  6. 【STM32 NET MF开发板学习-29】摄像头蓝牙图像远程获取

    分享一下我老师大神的人工智能教程.零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow 目前生产串口摄像头 ...

  7. 【STM32 .Net MF开发板学习-11】步进电机控制(非PWM模式)

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用 uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC - ...

  8. 【STM32 Net MF开发板学习-11】步进电机控制(非PWM模式)

    选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 四相八拍:A->AB->B ->BC -& ...

  9. 【STM32 Net MF开发板学习-19】DHT11温湿度传感器通信(上)

    前段时间开发远程医疗系统(Dr.Cloud)就曾用到过温湿度传感器,不过当时考虑到集成难度,选了一个RS485接口的传感器,该传感器实现了Modbus Rtu Slave的功能,只要客户程序实现Mod ...

最新文章

  1. 计算机视觉:卷积神经网络基础
  2. 201671010128 2017-10-08《Java程序设计》之Lambda与内部类
  3. [python3.3]Python异步Socket编程【TCP】
  4. c# image转换为bitmap_Python PIL.Image与numpy.array之间的相互转换
  5. 客座编辑:季统凯(1972-),男,博士,中国科学院云计算产业技术创新与育成中心研究员、主任。...
  6. 0元包邮 | 知识图谱学习导图
  7. STL中的lower_bound()函数和upper_bound()
  8. qt .pro文件配置
  9. paip.php 配置ZEND DEBUGGER 断点调试for cli..
  10. html图片闪光效果,CSS3实现一个效果酷炫的闪光特效代码
  11. 谷歌插件.crx文件无法安装
  12. 小学计算机课题研究方案,《小学信息技术课堂有效教学的探究》课题研究方案...
  13. 六,iOS中的金额格式化和金额大小写转换
  14. 台湾批准联电7.1亿美元投资联芯科技
  15. IT运维服务的主要内容
  16. 开始构建你的DBaaS:使用zCloud自动化安装部署Oracle和MySQL数据库
  17. Android Studio plugins 无法在线加载插件
  18. 计算机故事英语版,少儿英语故事:慢速计算机(1)The Slow Computer (1)
  19. 三菱5u 上位机mc协议_上位机读写三菱plc fx5u的内存数据示例
  20. 医学有限元(Mimics、ANSYS)

热门文章

  1. ECSHOP解决大量重复页面问题,提高SEO效果
  2. 什么是hasLayout
  3. 在Windows上使用MSVC编译QuaZip
  4. 如何使用本地账户完整安装 SharePoint Server
  5. 前端、后端、运维都能用的动态 json 数据管理神器,节省你大量的开发、设计数据库、运维的时间...
  6. DOM4j-中文API
  7. 7.生产者消费者 案例 (使用Lock 同步锁 方式,使用Condition完成线程之间的通信)...
  8. 如何区分数据科学家,数据工程师与数据分析师
  9. jquery获取元素颜色css('color')的值返回RGB
  10. Impala SQL 语言参考