uc/gui学习笔记,不是网上复制的,绝对是自己整理(不断更新)

2019-08-14 06:39发布

2-D图形库,
这个有些复杂,花了半天时间整理完毕
不容易理解的函数,都有举例
有问题大家交流
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
32条回答
正点原子
1楼-- · 2019-08-14 07:04
    GUI_ClearRect(0,0,100,100);//画矩形函数,以背景 {MOD}填充
    GUI_FillRect(100,100,150,150);//画矩形函数,以前景 {MOD}填充
    GUI_DrawPixel(20,20);//画一个点。以前景 {MOD}填充
                         是所有画图的基础

     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);
                   用法同上,只是会以前景 {MOD}填充
    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轴正方向的夹角


















xsx127
2楼-- · 2019-08-14 09:28
为什么贴出来呢
正点原子
3楼-- · 2019-08-14 12:35
方便阅读
郭震2009
4楼-- · 2019-08-14 14:43
谢谢分享... gui的手册讲的太模糊了..  
yxz1212_bao
5楼-- · 2019-08-14 18:55
 精彩回答 2  元偷偷看……
ranguangxu1012
6楼-- · 2019-08-14 22:15
不错,比手册上面易懂

一周热门 更多>