管理员
  
- 积分
- 165540
- 金钱
- 165540
- 注册时间
- 2010-12-1
- 在线时间
- 2117 小时
|
发表于 2012-6-22 16:09:51
|
显示全部楼层
GUI_ClearRect(0,0,100,100);//画矩形函数,以背景色填充
GUI_FillRect(100,100,150,150);//画矩形函数,以前景色填充
GUI_DrawPixel(20,20);//画一个点。以前景色填充
是所有画图的基础
GUI_DrawPoint(20,20);//以当前的笔大小画点,也就是要配合PenSize使用
GUI_SetPenSize(10); //设置画线的粗细
GUI_DrawPoint(20,20);
配合使用就是以20,20为圆心,(10-1)/2为半径画圆,且填充
GUI_InvertRect(30,0,60,20);与GUI_FillRect(100,100,150,150);没看出什么不同的地方
绘制位图
GUI_DrawBitmap();
例 extern const GUI_BITMAP bmaaa;
void main()
{
GUI_DrawBitmap(&bmaaa,x,y);
}
x,y是要显示图片的起始坐标
GUI_BITMAP是GUI的一个结构体名
bmaaa是用GUI的位图转换器生成.c或.h文件里面指向图像数组的结构体名
如下面的bmIMG在程序中代替bmaaa可在x,y显示一副BMP图片
GUI_CONST_STORAGE GUI_BITMAP bmIMG = {
48, /* XSize */
48, /* YSize */
48, /* BytesPerLine */
8, /* BitsPerPixel */
acIMG, /*  ointer to picture data (indices) */
&PalIMG /*  ointer to palette */
};
GUI_DrawBitmapMag(&bmIMG,x,y,xmul,ymul);可以把图片放大
暂时没发现可以缩小,xmul ymul写小于1的数就没显示了
画线
GUI_DrawHline(y,x0,x1);画水平线的函数
就是画水平线比Drawline快点,,,特定情况很有用
GUI_DrawVline(y,x0,x1);画垂直线的函数
GUI_DrawLine(x0,y0,x1,y1);画线
GUI_DrawLineRel(dx,dy);从当前坐标x,y画一条线到x+dx,y+dy坐标的线
GUI_DrawLineTo(x1,y1);从当前坐标x,y画一条线到x1,y1坐标的线
GUI_DrawPolyLine(const GUI_POINT* pPoint,int NumPoints,int x,int y)
pPoint 指向所显示的折线的指针
NumPoints点系列中指定点的数量
x,y 原点的坐标
绘多边形
GUI_DrawPolygon(apoint,countof(apoint),x,y);
#define countof(Array) (sizeof(Array)/sizeof(Array[0]))
const GUI_POINT apoint[]=
{
{0,0},{50,0},{80,60},{40,90},{20,20}
};
画多边形的轮廓,x,y为起点坐标
countof(apoint)是定义的宏,计算apoint[]中有多少点,也可以自己指定 数字,如果指定的数字n小于点的个数,会舍弃n后面的点
如果大于则会产生固定的点坐标
apiont是点的数组指针
GUI_FillPolygon(apoint,countof(apoint),0,0);
用法同上,只是会以前景色填充
GUI_EnlargePolygon(aEnlargedPoints,apoint,countof(apoint),20);
将一个多边形点的数组放大,把放大后的数组放到新数组里面,注意这个函数不 显示图形,
首先要定义变量GUI_POINT aEnlargedPoints[countof(apoint)];当作目标数组
调用GUI_EnlargePolygon()函数把原数组apoint[]放大保存到aEnlargedPoints []
最后调用显示函数GUI_DrawPolygon(aEnlargedPoints,countof(apoint),100,100);
20表示对多边形的所有边扩大20像素,是加上20,如果是1,也是有变化的
GUI_MagnifyPolygon(aEnlargedPoints,apoint,countof(apoint),mag);
其实也是放大,只是从不同的角度上变化
mag是把图形放大mag倍
如果mag是1则没变化,和 GUI_EnlargePolygon是有区别的
GUI_RotatePolygon(aEnlargedPoints,apoint,countof(apoint),10);
旋转图形,以弧度为单位,注意也是只旋转不显示的,要配合GUI_FillPolygon或者
GUI_DrawPolygon使用
2π约等于6.28,=360度,所以注意数值不是很大
画圆
GUI_DrawCircle(x0,y0,r);圆心,半径画圆180>=r>=0,r=0.则画点
GUI_FillCircle(x0,y0,r);圆心,半径画圆,填充,180>=r>=0,r=0.则画点
画椭圆
GUI_DrawEllipse(x0,y0,rx,ry);x ,y圆心坐标,rx是x轴半径 ,ry是y轴半径
GUI_FillEllipse(x0,y0,rx,ry);x ,y圆心坐标,rx是x轴半径 ,ry是y轴半径,填充
画圆弧
GUI_DrawArc(x,y,rx,ry,a0,a1);x ,y圆心坐标,rx是x轴半径 ,ry是y轴半径
a0起始角度,a1终止角度
角度是以与x轴正方向的夹角
|
|