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

简介:

.Net Micro Framework官方图形库是WPF,由于目前ST Cortex-M3开发板RAM太小,最大才512K(常见是128K256k),并且Cortex-M3CPU主频也不太高,运行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格式的位图我们下篇文章再进行介绍。

 

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

 

 

 






本文转自yefanqiu51CTO博客,原文链接: http://blog.51cto.com/yfsoft/343817 ,如需转载请自行联系原作者
相关文章
|
存储 开发框架 前端开发
asp.net与asp.net优缺点及示例
asp.net与asp.net优缺点及示例
185 0
|
9月前
|
API
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
【Azure 媒体服务】Media Service的编码示例 -- 创建缩略图子画面的.NET代码调试问题
|
7月前
|
BI Linux API
掌握 SkiaSharp 轻松实现 .NET 跨平台绘图
.NET 框架的发展,我们越来越多地寻求能够在多个平台上无缝运行的应用解决方案。
1262 2
|
9月前
|
XML API 图形学
【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
【Azure Developer】.Net 简单示例 "文字动图显示" Typing to SVG
|
11月前
|
XML API 图形学
.Net 简单示例 "文字动图显示" Typing to SVG “
该文描述了一个.NET API的实现过程,该API能将输入的文字转换成SVG动态图。首先,作者展示了示例网站(<https://readme-typing-svg.demolab.com/>)的功能,它能将文字转化为可自定义样式的SVG动画。接着分析了示例URL的响应,发现其内容类型为`image/svg+xml`,主要由SVG、path、animate和text元素组成。通过创建一个.NET Core Web API项目,作者设置了响应内容类型为`image/svg+xml`,并将示例URL的SVG内容直接输出,成功实现了相同效果。
|
SQL 开发框架 .NET
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
ASP.NET Web——GridView完整增删改查示例(全篇幅包含sql脚本)大二结业考试必备技能
118 0
|
开发工具 索引
NET SDK连接阿里云ElasticSearch示例
本文主要演示如何使用elasticsearch-net sdk连接阿里云ElasticSearch实例,通过index的创建进行验证测试。
507 0
NET SDK连接阿里云ElasticSearch示例
|
自然语言处理 API 开发工具
阿里云自然语言处理 .NET 使用示例
本文主要针对目前官方文档中参考Demo使用SDK较老且本身中文打印输出异常的问题,提供包括SDK安装步骤+正常可用示例.NET Demo。
阿里云自然语言处理 .NET 使用示例
.Net Micro Framework研究—绘图
目前在VS2005的环境里,还不支持.Net Micro Framework界面的所见即所得绘制,界面制作有三种方式,一是窗体直接绘图,二是Panel+形状对象、三是窗体+控件。第一种做法让人觉得又回到了DOS时代,回到了SCREEN 12的16色的世界里。
517 0