大学生
最后登录1970-1-1
在线时间 小时
注册时间2013-5-1
|
说明: (野火团队原创教程,未经许可禁止转载)
VC6.0 emWin5.20下载地址
http://pan.baidu.com/share/link?shareid=641741&uk=286563520
uCGUIBulder 4.0
http://pan.baidu.com/share/link?shareid=641752&uk=286563520
一. 2-D绘图说明
emWin 包含完整的2-D 图形库,可供大多数应用程序充分使用。emWin 提供的例程的使用具有
(或没有)裁剪,它们基于快速高效的算法。当前,只有GUI_DrawArc()函数需要浮点计算。2-D绘图的
例子很多,这里就不一一的讲解了,下面举一个官方的例子进行说明。
二. 例程讲解
这里使用官方的一个例程进行讲解
/*
---------------------------------------------------------------------
File : 2DGL_DrawScale.c 在官方的例子里面找这个文件就可以
Purpose : Drawing a scale using GUI-functions
----------------------------------------------------------------------
*/
#include "GUI.h"
#include <math.h>
#include <stddef.h>
#define SPEED 1100
/*******************************************************************
*
* static code
*
********************************************************************
*/
/*******************************************************************
*
* _DrawScale
Drawing a scale using GUI-functions
*/
static void _DrawScale(void) {
//的到屏的的长和宽
int XSize = LCD_GetXSize();
int YSize = LCD_GetYSize();
int XMid = XSize / 2;
int i;
int r1 = 110;
int r2 = 140;
int rt = 100;
int y = 240;
int step = 15;
int r = (r1 + r2) / 2;
/* 设置背景的颜色是黑色 */
GUI_SetBkColor(GUI_BLACK);
/* 一定要加上下面这个清屏指令,这样上面设置背景颜色才能起作用 */
GUI_Clear();
GUI_SetColor(GUI_WHITE);
GUI_SetFont(&GUI_Font24_ASCII);
GUI_SetTextAlign(GUI_TA_HCENTER);
GUI_DispStringAt("DrawScale - Sample", 160, 5);
while (1) {
int c = 0;
GUI_SetColor(GUI_WHITE);
GUI_SetFont(&GUI_Font8x16);
GUI_SetTextAlign(GUI_TA_LEFT);
GUI_Delay(SPEED / 2);
/* Display string at specified position, then clear to end of line */
GUI_DispStringAtCEOL("using", 5, 40);
GUI_DispStringAtCEOL("GUI_AA_DrawArc", 5, 55);
GUI_Delay(SPEED * 2);
/* 设置画线的线宽 */
GUI_SetPenSize(r2 - r1);
GUI_SetColor(0x0000AA);
/* 画一个抗锯齿的弧线, 圆心坐标,水平垂直半径,起始角度,结束角度*/
/* Displays an antialiased arc at a specified position in the current window, using the
current pen size and the current pen shape*/
GUI_AA_DrawArc(XMid, y, r, r, 45, 60);
GUI_Delay(SPEED);
/* 继续画弧线,60-90度 */
GUI_SetColor(0x00AA00);
GUI_AA_DrawArc(XMid, y, r, r, 60, 90);
GUI_Delay(SPEED);
/* 画外弧线 内弧线 */
GUI_SetPenSize(2);
GUI_SetColor(GUI_WHITE);
GUI_AA_DrawArc(XMid, y, r1, r1, 45, 135);
GUI_Delay(SPEED);
GUI_AA_DrawArc(XMid, y, r2, r2, 45, 135);
GUI_Delay(SPEED);
GUI_DispStringAtCEOL("", 5, 55);
GUI_Delay(200);
GUI_DispStringAtCEOL("using", 5, 40);
GUI_DispStringAtCEOL("GUI_AA_DrawLine & GUI_DispCharAt", 5, 55);
GUI_Delay(SPEED * 3);
for (i = 45; i <= 135; i += step) {
float co = cos(i * 3.1415926 / 180);
float si = sin(i * 3.1415926 / 180);
/* 画线的起始和截止点,并且标上相应的数字 */
/* 起始坐标点x1,y1,截止点x2,y2,*/
int x1 = XMid - r1 * co;
int y1 = y - r1 * si;
int x2 = XMid - (r2 - 1) * co;
int y2 = y - (r2 - 1) * si;
int xt = XMid - rt * co;
int yt = y - rt * si;
GUI_SetColor(GUI_WHITE);
GUI_SetPenSize(2);
GUI_AA_DrawLine(x1, y1, x2, y2);
GUI_SetColor(GUI_GREEN);
GUI_SetFont(&GUI_Font8x8);
GUI_DispCharAt('0' + c++, xt - 4, yt - 4);
GUI_Delay(SPEED / 2);
}
GUI_Delay(SPEED * 3);
GUI_ClearRect(0, 30, 320, 240);
}
}
/*******************************************************************
*
* MainTask
*
* Demonstrates GUI-functions
*
********************************************************************
*/
void MainTask(void) {
GUI_Init();
_DrawScale();
while(1);
}
在VC6.0模拟器上面运行的效果
三. 如何在野火开发板上面跑这个程序
1. 在火哥的开发板里面找到这个UCGUI DEMO的横屏或竖屏的程序,
将上面的代码复制到下面这个文件里面,覆盖掉原来的文件,就可
以正常的运行了。
|
|