emWin学习
来源:互联网 发布:php魔术常量有哪些 编辑:程序博客网 时间:2024/05/19 05:40
一、API学习
1.1、初始化
int GUI_Init(void); 函数来初始化emWin内部数据结构和变量。如果在初始化之前调用WM_SetCreateFlags()使用窗口管理器,则在GUI_Init()内创建背景窗口。(也就是窗口设置创建标记必须在初始化之前)。
1.2、显示文本
可以显示字符串、十六进制、十进制、二进制数,文本可以定位在屏幕上的任何像素。
控制字符指字符代码小于32的字符,wmWin只能识别两个字符:
换行 ‘\n’,当前文本改变值下一行的开始,默认x=0,y+=字体-距离(像素)。
回车‘\r’ , 当前文本位置改变至当前行的开始,默认x=0.
1.2.1 文本API
GUI_GotoXY( x ,y) ;坐标跳到x,y像素位置。
二、使用过程注意事项
1、窗口管理的设置标志必须在emWin初始化之前,即WMSetCreatFlags() 在GUI_Init()之前。
2、GUI_Clear() 函数,使用GUI_SetBkColor()函数之后,如果调用GUI_Clear()函数之后会对整个屏幕的背景颜色进行重新填充,如果GUI_SetBkColor()设置背景色后,没有调用GUI_Clear()函数,则只改变显示的文本部分的背景色,但是整个屏幕的背景色还是原来的颜色。
3、GUI_DrawPoint(); 画点函数,点的大小和画笔大小有关,可以用GUI_SetPenSize()函数来改变画笔大小,从而改变点的大小。
3、GUI_Goto()函数在画线函数中不能改变画线函数相对偏移的起始位置,调用GUI_MoveTo(); 函数改变画线函数的起始位置。 (至于为什么还没明白。) 如果不调用GUI_MoveTo()函数改变线条的位置,则默认是从原点开始的。
4、样式:
文本的样式 GUI_SetTextStyle()
文本的模式 GUI_SetTextMode();
线条的样式:GUI_SetLineStyle(); GUI_DrawLine() 使用线条样式,仅适用与pensize为1的情况。
绘图模式:GUI_SetDrawMode();
5、画多边形时坐标的计算
GUI_DrawPolygon(const GUIPOINT *point,int NumPoints,int x,int y); 多变行绘制函数
*point是一个结构体数组,包含着多变成每个拐点的坐标值,Numpoints 有几个拐点,x,y,多边行坐标的原点。与数学坐标略有不同,X轴与数学坐标一样,原点左边的是负右边的是正;Y轴与数学坐标相反,原点上边的是负,原点下边的是正。
6、图片的显示分为两种:
(1) 将图片加载到存储区然后显示
可以用emwin带的位图转换软件将图片转换成.c文件或.dta格式文件,.c文件可以直接添加到工程中,然后在程序里边用函数GUI_BMP_Draw(); 直接调用.c文件中的数据来显示。这样耗费很大的Flash,而且也保存不了几幅图片。
.dta格式或者本身的bmp格式图片可以放在外部的SD卡中,然后在程序中开辟足够大的内存空间,用fatfs文件系统的读函数将整个图片读到RAM中然后显示。
加载到存储区显示比较耗费RAM空间,需要在配置emwin过程中指定的RAM空间至少比要显示图片的大小大5K左右,如果分配的是单片机内部的RAM,那单片机的RAM需要很大很大,最好是单片机挂载外部的SRAM,emwin配置过程将emwin的内存分配到外部SRAM。这样可以开辟较大空间加速图片的显示速度。
(2) 图片无需加载到存储区
图片以原格式放在SD卡中也可以显示,需要自己实现一个读数据的函数,buff的大小可以是屏幕行的大小*4,比较节省空间,在函数内部读一行像素的大小或更小,每次读完要进行地址的偏移。
调用函数GUI_BMP_DrawEx(); 来实现从无需加载到存储区的显示。
- emWin学习
- EMWin学习笔记
- EMWin对话框Diolog学习
- emWin菜单(Menu)学习
- 在keil5上简单学习GUI(附emWin GUIBuilder)
- emWin:2D Graphic学习碰到的问题
- emwin学习之路:关于menu小工具的使用
- emWin -- 杂七杂八
- LPC1788 EMWIN
- emwin移植
- [EMWIN] emwin的刷新机制探索1
- LPC1788 emWin应用笔记
- emWin - BMP图片显示
- emWin -- Widget之Edit
- emwin之模拟器
- emwin,Let's Go!!!
- emwin,hello world
- emwin,helloworld 2
- iOS监听H5页面goBack返回事件问题
- 推荐有关微信开发的十个开源项目
- ip 多播地址 和mac多播地址隐射
- 小技巧
- 关于小数负数丢失精度的问题
- emWin学习
- 设计师应该关注的科技发展方向(三)
- UVALive 4839 HDU 3686 Traffic Real Time Query System
- Android 中自定义属性(attr.xml,TypedArray)的使用!
- 使用UIActivityViewController实现AirDrop分享
- jquery的小技巧
- 目标检测方法效果小结
- 完全背包详解
- glBufferSubData | glClearBufferSubData | glCopyBufferSubData