STemwin的模拟器可以修改imei的模拟器形状吗

【安富莱】【STemWin教程】第10章 2-D图形库之绘制图形 - STM32/STM8技术论坛 -
中国电子技术论坛 -
最好最受欢迎电子论坛!
后使用快捷导航没有帐号?
【安富莱】【STemWin教程】第10章 2-D图形库之绘制图形
11:21:11  
第10章 2-D图形库之绘制图形
& & 本期主要讲解2-D图形库的图形绘制,包括绘制多边形,绘制圆,绘制椭圆,绘制弧线,绘制线图,绘制饼图。本期的例子不用在开发板上面做调试,直接用emWin5.24的模拟器即可。& & 10. 1&&绘制多边形& & 10. 2&&绘制圆& & 10. 3&&绘制椭圆& & 10. 4&&绘制弧线& & 10. 5&&绘制线图& & 10. 6&&绘制饼图
10.1 绘制多边形& & 多边形的绘制主要有以下几个函数:
10.1.png (51.81 KB, 下载次数: 0)
11:20 上传
10.1.1 例子一1. GUI_DrawPolygon():& & 在当前窗口中绘制按点列表定义的多边形的轮廓,通过将终点连接到起点,绘制的多边形将自动闭合。2. GUI_EnlargePolygon():& & 按指定的长度 (像素)全方位扩展多边形,确保点的目标数组等于或大于源数组。3. GUI_FillPolygon()& & 在当前窗口中绘制按点列表定义的填充的多边形,通过将终点连接到起点,绘制的多边形将自动闭合。终点无需接触到多边形的轮廓。通过为多边形的各个y位置绘制一条或多条水平直线,可对多边形进行渲染。默认情况下,为一个y位置绘制水平直线使用的最大点数量为12(意味着每个y位置需要6条直线)。如果需要增加此值,可使用宏GUI_FP_MAXCOUNT设置最大点数量。下面是在模拟器上面实际运行的例子#include &GUI.h&
/* 图形的原始坐标点 */
const GUI_POINT aPoints[] = {
{ 40, 20},
{ 0, 20},
{ 20, 0}
};
/* 用于存储放大后的坐标点 */
GUI_POINT aEnlargedPoints[GUI_COUNTOF(aPoints)];
void Sample(void) {
& &
& & GUI_Clear();
& & /* 设置绘图模式 */
& & GUI_SetDrawMode(GUI_DM_XOR);
& & /* 绘制多边形 */
& & GUI_FillPolygon(aPoints,& && && && &&&/* 指向要显示和填充的多边形 */
& && && && && && &&&GUI_COUNTOF(aPoints), /* 点列表中指定的点数量 */
& && && && && && &&&140,& && && && && && &/* 原点的X位置 */
& && && && && && &&&110);& && && && && &&&/* 原点的Y位置 */
& & for (i = 1; i & 10; i++) {
& && &&&GUI_EnlargePolygon(aEnlargedPoints,& && && && && && && & /* 指向目标多边形 */
& && && && && && && && && && && && && && & aPoints,& && && && &&&/* 指向源多边形 */
& && && && && && && && && && && && && && & GUI_COUNTOF(aPoints), /* 点列表中指定的点数量 */
& && && && && && && && && && && && && && &&&i * 5);& && && && &&&/* 扩展多边形的长度 (像素) */
& && &&&/* 绘制放大后的多边形 */
& && &&&GUI_FillPolygon(aEnlargedPoints, GUI_COUNTOF(aPoints), 140, 110);
& & }
}
void MainTask(void)
{
& & GUI_Init();
& & Sample();
& & while(1)
& & {
& && &&&GUI_Delay(100);
& & }
}复制代码显示效果如下:
10.2.png (8.79 KB, 下载次数: 0)
11:20 上传
10.1.2 例子二1. GUI_MagnifyPolygon()& & 按指定系数放大多边形。确保点的目标数组等于或大于源数组。请注意扩展和放大多边形之间的区别。调用函数GUI_EnlargePolygon()(参数Len= 1)将使多边形的所有边扩展1像素,而调用GUI_MagnifyPolygon()(参数Mag= 1)则没有效果。下面是在模拟器上面实际运行的例子#include &GUI.h&
const GUI_POINT aPoints[] = {
{ 0, 20},
{ 40, 20},
{ 20, 0}
};
GUI_POINT aMagnifiedPoints[GUI_COUNTOF(aPoints)];
void Sample(void) {
& & int Mag, y = 0, Count = 4;
& & GUI_Clear();
& & GUI_SetColor(GUI_GREEN);
& & for (Mag = 1; Mag &= 4; Mag *= 2, Count /= 2) {
& && &&&int i, x = 0;
& && &&&GUI_MagnifyPolygon(aMagnifiedPoints, aPoints, GUI_COUNTOF(aPoints), Mag);
& && &&&for (i = C i & 0; i--, x += 40 * Mag) {
& && && && &GUI_FillPolygon(aMagnifiedPoints, GUI_COUNTOF(aPoints), x, y);
& && &&&}
& && &&&y += 20 * M
& & }
}
void MainTask(void)
{
& & GUI_Init();
& & Sample();
& & while(1)
& & {
& && &&&GUI_Delay(100);
& & }
}复制代码实际显示效果如下:
10.3.png (8.87 KB, 下载次数: 0)
11:20 上传
10.1.3 例子三& & 这个例子是官方提供的一个例子,具体文件如下:
10.4.jpg (42.34 KB, 下载次数: 0)
11:20 上传
显示效果如下:
10.5.png (9.53 KB, 下载次数: 0)
11:20 上传
10.6.png (9.52 KB, 下载次数: 0)
11:20 上传
10.7.png (9.58 KB, 下载次数: 0)
11:20 上传
11:23:11  
10.2 绘制圆1. GUI_DrawCircle()
& & 在当前窗口中的指定位置绘制指定尺寸的圆的轮廓。此例程无法处理大于180的半径,因为它使用整数计算,否则将导致溢出。不过,对于大多数嵌入式应用程序而言,这不是问题,因为直径为360的圆比显示器还要大。下面是在模拟器上面实际运行的例子#include &GUI.h&
void ShowCircles(void)
for (i=10; i&50; i += 3)
GUI_DrawCircle(120, 60, i);
}
void MainTask(void)
{
GUI_Init();
ShowCircles();
while(1)
{
GUI_Delay(100);
}
}复制代码
实际显示效果如下:
10.8.png (9.65 KB, 下载次数: 0)
11:22 上传
11:24:09  
10.3 绘制椭圆1. GUI_DrawEllipse()& & 在当前窗口中的指定位置绘制指定尺寸的椭圆的轮廓。& & 此例程无法处理大于180的rx/ry参数,因为它使用整数计算,否则将导致溢出。2. GUI_FillEllipse()& & 在当前窗口中的指定位置绘制指定尺寸的填充的椭圆。此例程无法处理大于180的rx/ry参数。下面是在模拟器上面实际运行的例子#include &GUI.h&
void MainTask(void)
{
GUI_Init();
GUI_SetColor(0xff);
GUI_FillEllipse(100, 150, 50, 70);
GUI_SetColor(0x0);
GUI_DrawEllipse(100, 150, 50, 70);
GUI_SetColor(0x000000);
GUI_FillEllipse(100, 150, 10, 50);
while(1)
{
GUI_Delay(100);
}
}复制代码
实际现象效果如下:
10.9.png (8.4 KB, 下载次数: 2)
11:23 上传
11:25:12  
10.4 绘制弧线1. GUI_DrawArc()& &&&在当前窗口中的指定位置绘制指定尺寸的弧线。弧线是圆轮廓的一部分。当前未使用ry参数,而使用rx参数代替。GUI_DrawArc()使用浮点库。它无法处理大于180的rx/ry参数,因为它使用整数计算,否则将导致溢出。下面是在模拟器上面实际运行的例子#include &GUI.h&
#include &math.h&
#include &stdio.h&
void DrawArcScale(void)
{
int x0 = 160;
int y0 = 180;
char ac[4];
GUI_SetBkColor(GUI_WHITE);
GUI_Clear();
GUI_SetPenSize( 5 );
GUI_SetTextMode(GUI_TM_TRANS);
GUI_SetFont(&GUI_FontComic18B_ASCII);
GUI_SetColor(GUI_BLACK);
GUI_DrawArc( x0,y0,150, 150,-30, 210 );
GUI_Delay(1000);
for (i=0; i&= 23; i++) {
float a = (-30+i*10)*3.;
int x = -141*cos(a)+x0;
int y = -141*sin(a)+y0;
if (i%2 == 0)
GUI_SetPenSize( 5 );
else
GUI_SetPenSize( 4 );
GUI_DrawPoint(x,y);
if (i%2 == 0) {
x = -123*cos(a)+x0;
y = -130*sin(a)+y0;
sprintf(ac, &%d&, 10*i);
GUI_SetTextAlign(GUI_TA_VCENTER);
GUI_DispStringHCenterAt(ac,x,y);
}
}
}
void MainTask(void)
{
GUI_Init();
DrawArcScale();
while(1)
{
GUI_Delay(100);
}
}复制代码
实际显示效果如下:
10.10.png (9.87 KB, 下载次数: 2)
11:24 上传
11:26:36  
10.5 绘制曲线& &&&这个比较有代表意义,后面会单独的开一期专门的将这个函数,现在只是提供一个基本的例子。1. GUI_DrawGraph()& & 该函数首先设置到使用x0、y0和给定数组的第一个Y值所指定位置的直线光标。然后,将开始绘制到x0 + 1、y0 + *(paY + 1)、x0 + 2、y0 + *(paY + 2)等位置的线下面是在模拟器上面实际运行的例子#include &GUI.h&
#include &stdlib.h&
I16 aY[100];
void MainTask(void)
GUI_Init();
for (i = 0; i & GUI_COUNTOF(aY); i++)
{
aY[i] = rand() % 50;
}
GUI_DrawGraph(aY, GUI_COUNTOF(aY), 0, 0);
while(1)
{
GUI_Delay(100);
}
}复制代码
实际显示效果如下:
10.11.png (8.32 KB, 下载次数: 2)
11:26 上传
11:27:34  
10.6 绘制饼图1. GUI_DrawPie()& & 绘制圆形扇区。下面是在模拟器上面实际运行的例子#include &GUI.h&
int i, a0, a1;
const unsigned aValues[] = { 100, 135, 190, 240, 340, 360};
const GUI_COLOR aColors[] = { GUI_BLUE, GUI_GREEN, GUI_RED,
GUI_CYAN, GUI_MAGENTA, GUI_YELLOW };
void MainTask(void)
GUI_Init();
for (i = 0; i & GUI_COUNTOF(aValues); i++) {
a0 = (i == 0) ?0 :aValues[i - 1];
a1 = aValues[i];
GUI_SetColor(aColors[i]);
GUI_DrawPie(100, 100, 50, a0, a1, 0);
}
while(1)
{
GUI_Delay(100);
}
}复制代码
实际显示效果如下:
10.12.png (8.47 KB, 下载次数: 2)
11:27 上传
10.7 实验总结& & 关于2-D图形库的绘图部分就跟大家讲这么多,还是那句话,多多练习,熟能生巧。
22:51:32  
我去了,你是?
08:54:09  
谢谢分享.。。。。。。。。。。
FPGA是当前很热门的技术。
发展到现在,FPGA器件由早期的纯逻辑粘合发展到如今的可编程片上系统(SOC),FPGA应用的领域愈发广泛,开发难度和复杂度也越来越大。
那么究竟如何才能高效学习好FPGA技术呢?
每天选一个需要解决的问题,大家一起来帮忙。
授人玫瑰,手有余香
USB Type-C终结了长期以来USB需要通过试错法来多次重插的历史,一个接口搞定了电能、数据、音视频数据三种传输需求,形成接口和电缆以及快速充电协议的大统一。
预计2017年全球所有新发布手机都将采用USB Type-C接口和USB PD供电协议,将将引发手机行业革命。
Powered by第28章emWin(ucgui)STemWin多任务设计(模拟器)_百度文库
两大类热门资源免费畅读
续费一年阅读会员,立省24元!
第28章emWin(ucgui)STemWin多任务设计(模拟器)
上传于|0|0|文档简介
&&第28章emWin(ucgui)STemWin多任务设计(模拟器)ucos-ii,ucos-iii,emwin,StemWin,ucgui
阅读已结束,如果下载本文需要使用0下载券
想免费下载更多文档?
定制HR最喜欢的简历
下载文档到电脑,查找使用更方便
还剩6页未读,继续阅读
定制HR最喜欢的简历
你可能喜欢48小时热门
从2008年-2014年 快猴网一直在努力做到最好
备案编号:粤ICP备号-1有关于STEMWIN 的菜单(MENU) 操作问题,不知是否是BUG|uCOS &
emWin - 安富莱电子论坛 - Powered by phpwind
查看完整版本: [--
有关于STEMWIN 的菜单(MENU) 操作问题,不知是否是BUG
实例用的模拟器里面的NEMU 例程进行更改的。   case WM_MENU:    pData = (MENU_MSG_DATA*)pMsg-&Data.p;    switch (pData-&MsgType) {    case MENU_ON_ITEMPRESSED:      //      // This message is send regardless of the item state is disabled or not      //      MENU_GetItem(pMsg-&hWinSrc, pData-&ItemId, &Data);      if (Data.Flags & MENU_IF_DISABLED) {        _MessageBox(&The pressed item was disabled&, &Message&);      }          case MENU_ON_ITEMACTIVATE:      //      // This message is send on highlighting a menu item      //      Index = pData-&ItemId - ID_MENU_FILE_NEW;      if (Index &= 0) {        TEXT_SetText(_hText, _paDescription[pData-&ItemId - ID_MENU_FILE_NEW]);      } else {        TEXT_SetText(_hText, &Ready&);      }          case MENU_ON_ITEMSELECT:      //      // This message is send only if an enabled item has been selected      //      //sprintf(acBuffer, &ID of the selected\nitem is 0x%X&, pData-&ItemId);      //_MessageBox(acBuffer, &Message&);     GUI_EndDialog(hWin,0);     //上面代码注释掉,这里增加了这条点击任何一个菜单就关闭当前的窗口。          } #define GUI_NUMBYTES  0;  #define GUI_BLOCKSIZE 32 这里把内存设置为30K   此时在开发板上运行点击菜单关闭就死机,进入硬件错误r0  = 0x 1FFF97BC        内存地址越标了。r1  = 0x         r2  = 0x        4r3  = 0x         r12 = 0x       10lr  = 0x  800D7C5        pc  = 0x  80035EA        psr = 0x 0;       #define GUI_NUMBYTES  0;     分配20K 内存给他,此时运行正常,点击菜单可以关闭。    后来我设置20K 也不能正常运行了。以上的程序是在5.26,5.28  都存在这问题。但是用5.22版本运行上面的程序内存分配多少都可以正常运行。    (其它的版本就没有测试)[attachment=9924]菜单源码在附件。哪位高手帮看下是什么问题?万分感激!&&&&&&&&&&&&&&&&&&&&&&&&同样的代码在5.26,5.28的模拟器上又是可以正常运行的。[attachment=9925]              这图是死机的样子,      正常关闭是全黑屏的。[attachment=9926]这个是正常关闭的
楼主的这个问题,稍有些麻烦,待我测试后跟楼主交流下。
:楼主的这个问题,稍有些麻烦,待我测试后跟楼主交流下。 ( 18:51) 好的,等你测试下是什么问题了。
:楼主的这个问题,稍有些麻烦,待我测试后跟楼主交流下。 ( 18:51) FRAMEWIN_SetDefaultSkin(FRAMEWIN_SKIN_FLEX);&&&&&&PROGBAR_SetDefaultSkin(PROGBAR_SKIN_FLEX);&&&&RADIO_SetDefaultSkin(RADIO_SKIN_FLEX);&&&&SCROLLBAR_SetDefaultSkin(SCROLLBAR_SKIN_FLEX);&&&&SLIDER_SetDefaultSkin(SLIDER_SKIN_FLEX);&&&&SPINBOX_SetDefaultSkin(SPINBOX_SKIN_FLEX);&&&&BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);&&&&DROPDOWN_SetDefaultSkin(DROPDOWN_SKIN_FLEX);&&&&MENU_SetDefaultSkin(MENU_SKIN_FLEX);加上这段设置皮肤代码,再分配20K 内存给EMWIN&&(#define GUI_NUMBYTES&&1024*20)&& 就可以关闭了,但是设置30K 就不行了。
帮楼主在我们的V4(STM32F103)板子上面测试了一下。没问题的。动态内存分配的30KB。STemWin5.28默认是使能了皮肤色的。版本信息如下:1. ST固件库到V3.6.1版本2. BSP驱动包V1.23. uCOS-III版本V3.05.004. uC/CPU版本V1.30.026. FatFS版本V0.117. STemWin版本V5.28=====================================[attachment=9942]楼主的代码我放在了这个文件里面:[attachment=9943]
:帮楼主在我们的V4(STM32F103)板子上面测试了一下。没问题的。动态内存分配的30KB。STemWin5.28默认是使能了皮肤色的。版本信息如下:1. ST固件库到V3.6.1版本2. BSP驱动包V1.23. uCOS-III版本V3.05.00....... ( 09:29) #define EX_SRAM   0  /*1 used extern sram, 0 used internal sram */#if EX_SRAM#define GUI_NUMBYTES  ()#else#define GUI_NUMBYTES  (30*1024)#endif/* Define the average block size */#define GUI_BLOCKSIZE 0x80#define GUI_BLOCKSIZE 0x40       改为0x40  或者 0x20    再试下看看还有就是你再用上面改了你外部 内存再试下,都结合试下。比如:一:#define GUI_NUMBYTES  (30*1024)#define GUI_BLOCKSIZE 0x40二:#define GUI_NUMBYTES  (20*1024)#define GUI_BLOCKSIZE 0x40三:#define GUI_NUMBYTES  ()#define GUI_BLOCKSIZE 0x80四:#define GUI_NUMBYTES  (512*1024)#define GUI_BLOCKSIZE 0x80五:#define GUI_NUMBYTES  (512*1024)#define GUI_BLOCKSIZE 0x40六:#define GUI_NUMBYTES  (750*1024)#define GUI_BLOCKSIZE 0x40七:#define GUI_NUMBYTES  (750*1024)#define GUI_BLOCKSIZE 0x80八:#define GUI_NUMBYTES  (256*1024)#define GUI_BLOCKSIZE 0x80九:#define GUI_NUMBYTES  (256*1024)#define GUI_BLOCKSIZE 0x40~~~~~~~~~~~~省略~~~等等的结合试下看看,按理论上面设置都不会有影响的,但是有时可以有时不行,这个我也不确定哪个不行,比如两个工程,在工程1 可以,在工程2同样的设置就不行。
查看完整版本: [--
Powered by
Time 0.476089 second(s),query:2 Gzip enabled还没有帐号? 赶紧
用户版块帖子
emWin5.30模拟器中加入了一个汉字显示的例子,为SEGGER所做的工作赞一下
在线时间18800小时
铜币15152威望2274贡献值0银元0
希望SEGGER后期能够直接提供GBK编码小软件,这样汉字显示就太方便。编码转换也省了。emWin5.30模拟器下载地址:例子路径:=1200) window.open('/attachment/Fid_12/12_58_022ddf924eb6b87.png?41');" style="max-width:1200" onload="if(is_ie6&&this.offsetWidth>1200)this.width=1200;" >显示效果:=1200) window.open('/attachment/Fid_12/12_58_dd4a.png?26');" style="max-width:1200" onload="if(is_ie6&&this.offsetWidth>1200)this.width=1200;" >=1200) window.open('/attachment/Fid_12/12_58_54bc.png?27');" style="max-width:1200" onload="if(is_ie6&&this.offsetWidth>1200)this.width=1200;" >
超级赛亚人1 :燃烧吧,小宇宙!
在线时间174小时
铜币2568威望26贡献值0银元0
楼主威武,谢谢分享。刚才用VS2013仿真使用时发生错误,Exe文件夹里缺少GUISimulatin.exe文件,这个不知道怎么解决
在线时间18800小时
铜币15152威望2274贡献值0银元0
回 有梦为马 的帖子
:楼主威武,谢谢分享。刚才用VS2013仿真使用时发生错误,Exe文件夹里缺少GUISimulatin.exe文件,这个不知道怎么解决 ( 18:46) 看这个帖子:如果你的系统是XP WIN7 32位或者64位,建议使用这个超级精简版VC6.0,比使用VS方便太多,VS还是太卡了。
超级赛亚人1 :燃烧吧,小宇宙!
在线时间174小时
铜币2568威望26贡献值0银元0
回 eric2013 的帖子
:看这个帖子:/read.php?tid=10656如果你的系统是XP WIN7 32位或者64位,建议使用这个超级精简版VC6.0,比使用VS方便太多,....... ( 18:51) 谢谢了,使用VS2013忽略错误继续生成的话可以使用。emwein5.2版本用vs2013仿真很好,没这些问题。
在线时间18800小时
铜币15152威望2274贡献值0银元0
回 有梦为马 的帖子
:谢谢了,使用VS2013忽略错误继续生成的话可以使用。emwein5.2版本用vs2013仿真很好,没这些问题。 ( 20:22) 恩。
超级赛亚人1 :燃烧吧,小宇宙!
在线时间496小时
铜币535威望95贡献值0银元0
emwin5.30和5.28中生成字体的那个工具都是demo版本的。。。。哪里搞正式的版本呢?
在线时间18800小时
铜币15152威望2274贡献值0银元0
回 caicaptain2 的帖子
:emwin5.30和5.28中生成字体的那个工具都是demo版本的。。。。哪里搞正式的版本呢?....... ( 16:33) STemWin里面有正式版,最新的小工具在这个软件包里面就有:
超级赛亚人1 :燃烧吧,小宇宙!
在线时间1小时
铜币21威望0贡献值0银元0
下来了,谢谢分享。
在线时间154小时
铜币67威望10贡献值0银元0
能将这个例程上传吗?谢谢~
在线时间18800小时
铜币15152威望2274贡献值0银元0
回 cingcing 的帖子
:能将这个例程上传吗?谢谢~ ( 22:03) 论坛检索5.30,就可以找到模拟器的下载,这个例子就在压缩包里面。
超级赛亚人1 :燃烧吧,小宇宙!
在线时间17小时
铜币6威望0贡献值0银元0
不错……学习中!硬汉,这个可以实现像手机那样滑动切换界面的操作不?
在线时间18800小时
铜币15152威望2274贡献值0银元0
回 chengqing 的帖子
:不错……学习中!硬汉,这个可以实现像手机那样滑动切换界面的操作不? ( 15:44) 可以的,等待我们F429板子的综合Demo发布,已经实现了。效果不错。
超级赛亚人1 :燃烧吧,小宇宙!
访问内容超出本站范围,不能确定是否安全
限100 字节
批量上传需要先选择文件,再选择上传
您目前还是游客,请
&回复后跳转到最后一页
Powered by & Copyright Time now is:02-22 12:36 &
版权所有 Gzip enabled
Total 0.942451(s) query 5,}

我要回帖

更多关于 可以用修改器的模拟器 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信