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

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

            }

         }

时间: 2024-08-03 15:16:55

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

【STM32 .Net MF开发板学习-04】TinyGUI位图显示

上一篇博文<TinyGUI绘图示例>介绍了TinyGUI库的绘图函数,接下来就要介绍位图显示了,由于Cortex-M3开发板的RAM比较小,比如EM-STM3210E仅128K,所以显示位图是个比较棘手的事,如320*240 16位的位图大小就为150K,由于官方的WPF以一个BMP位图为本底进行绘图,所以RAM内存需求至少大于150K.TinyGUI则直接对显存进行绘制,对RAM没有直接需求,当然如果RAM够小,整幅位图也要分块显示. 由于目前Cortex-M3的芯片主频较低,所以为了加快位

【STM32 .Net MF开发板学习-20】蓝牙遥控智能小车(手机模式)

无论是用WIfi还是用GPRS遥控小车,目前都离不了PC这个中转站,并且PC还得借助Zigbee通道和小车通信,这就大大地增加了此遥控平台的构建代价.以前在研究iRobot机器人的时候,用过其配套的蓝牙模块,可以通过PC上的蓝牙连接,远程控制iRobot(相关文章<用MF控制机器人>).目前大部分手机也都支持蓝牙接口,所以基于此,我们借用iRobot的蓝牙模块,就可以用手机直接遥控智能小车了. 不过问题来了,原蓝牙模块是和iRobot配套的,其模块供电.串口连接等问题不用考虑,直接插入25针的

【STM32 .Net MF开发板学习-18】GPRS遥控智能小车

有了Wifi间接控制智能小车的经验,很自然的想到,也可以通过GPRS远程遥控智能小车,因为从通信原理上看,二者其实没有什么本质的不同,都是基于Socket的TCP通信,其控制环节如下: 手机 ===> GPRS(TCP/IP) ===> PC ===> Zigbee(串口232/TTL) ===> 智能小车 与Wifi通信不同,要使手机连接GPRS,还得需要进行一定的编程才能完成,相关内容,我这里也不用介绍了,我以前写的博文<让智能手机和居家电脑互联互通(WM6 GPRS)&

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

恰好以前购买的一个PDA含Wifi功能,所以与其用PC通过Zigbee控制智能小车,不如用PDA来控制,这样更为方便,不过由于目前.NET MF开发板不直接支持Wifi功能,所以我们也只好间接控制了,也就是PDA控制PC,PC通过Zigbee控制智能小车. 对我们开发者来说,Wifi和普通的网线接口一样,都是Socket编程.我们只需用在PDA上构建一个简单的TCP Client端,在PC构建一个TCP Server端即可,PDA发送相关指令,PC接收后通过Zigbee转发给智能小车. PDA

【STM32 .Net MF开发板学习-16】Zigbee遥控智能小车

Zigbee技术目前在物联网领域和RFID一样,受关注度非常高.日前中科院上海微系统与信息技术研究所.无锡物联网产业研究院等传感器网络标准工作组成员单位联合发布了名为VW628.WSNS1_SCBR的两款中国自主知识产权的无线传感网SoC芯片,其中WSNS1_SCBR为中国首款符合IEEE802.15.4g标准的验证型全集成传感网节点SoC芯片. 其实封装好的Zigbee模块,使用起来和操作串口一样,特别是我们把其通信模式设置为透明传输模式,这时候我们已经感觉不到是在用Zigbee模块,而觉得是

【STM32 .Net MF开发板学习-15】红外遥控智能小车

我前段时间写了<用PWM驱动智能小车>和<红外遥控器编码识别>两篇博文,分别介绍了如何用PWM驱动直流电机及红外遥控器编码识别,这一次我们把二者结合起来,用红外遥控器遥控智能小车. 在<红外遥控器编码识别>中,我们用面包板搭建简单的电路,来验证红外接收信号,但是放在小车上是不行的,相关器件我们需要进行焊接,最终完成图如下. 开发板学习-15]红外遥控智能小车-">我们把智能小车和红外板拼装在一起,最终完成图如下:

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

选用的步进电机的型号为28BYJ-48(或MP28GA,5V,转速比1/64),驱动电路选用uln2003芯片的驱动板,其控制时序图如下: 开发板学习-11]步进电机控制(非PWM模式)-">四相八拍:A->AB->B ->BC ->C ->CD ->D ->DA 其A.B.C.D指的是uln2003芯片驱动板的1N1.1N2.1N3.1N4,波形在上表示有输入信号,波形在下表示无输入信号. 我们采用红牛开发板进行步进电机控制,为了便于接线,我们需

【STM32 .Net MF开发板学习-05】PC通过Modbus协议远程操控开发板

从2002年就开始接触Modbus协议,以后陆续在PLC.DOS.Windows..Net Micro Framework等系统中使用了该协议,在我以前写的一篇博文中详细记载了这一段经历,有兴趣的朋友可以看一看<我的Modbus Slave/Client开发历程(Rtu/AscII/Tcp)>.该协议公开,精简,并且可靠,目前大部分智能仪表,智能模块和一些PLC都采用了该协议,前一段时间有位网友询问相关Modbus的问题,所以这里就以Modbus的实现来来作为.Net MF开发板的串口示例.

【STM32 .Net MF开发板学习-01】Hello world

开发前准备: 1.下载并安装VS2008 SP1 .Net Micro Framework支持VS 2008 Express版本,这是一款免费的开发工具,不过我没有使过,有条件的朋友可以优先考虑安装专业版或企业版. VS2008 Express sp1的下载地址如下: http://www.microsoft.com/express/download/ 2.下载.NET Micro Framework 4.0 SDK 要开发应用程序,还必须下载.NET Micro Framework 4.0 S