>_<:这里的动画是黄色矩形区域中一个模仿俯视图的起重机运作动画,一个是模仿主视图的吊钩的运动。通过改变初始Init函数中的数据b_x,b_y实现矩形区域的移动。当实时采集时要首先根据起重机的实际情况改变比例,当传感器传来数据时就相当于这里的run函数,只要把传感器数据接收函数和相关函数结合即可。

>_<:main code:

  1 #include "stdlib.h"
  2 #include "GUI.H"
  3 /*
  4 颜色
  5 */
  6 #define Black     0x000000
  7 #define White    0xFFFFFF
  8 #define Blue    0xFF0000
  9 #define Red        0x0000FF
 10 /*
 11 画矩形区----------改造的和51一样的函数
 12 */
 13 void Rectangle(int left,int up,int right,int down,U16 color)
 14 {
 15     GUI_SetColor(color);
 16     GUI_DrawHLine(up,left,right);//横线
 17     GUI_DrawHLine(down,left,right);//横线
 18     GUI_DrawVLine(left,up,down);//垂线
 19     GUI_DrawVLine(right,up,down);//垂线
 20 }
 21 /*
 22 画线函数-----------改造的和51一样的函数
 23 */
 24 void Line(int x0,int y0,int x1,int y1,U16 color)
 25 {
 26     GUI_SetColor(color);
 27     GUI_DrawLine(x0,y0,x1,y1);
 28 }
 29 ///
 30 int b_x,b_y,b_l,b_w;//轨道的x,y,长,宽
 31 //大车的位置,老位置,y值,宽,速度,加速度,左限位,右限位
 32 int m_x,m_old_x,m_y,m_l,m_w,m_v,m_a,m_l_limit_p,m_r_limit_p;
 33 //小车的位置,老位置,超出部分,速度,加速度,上限位,下限位
 34 int s_y,s_old_y,s_extre_part,s_v,s_a,s_u_limit_p,s_d_limit_p;
 35
 36
 37 int h_x,h_y,h_w;//横梁的x,y和宽
 38 int move_x_v,move_y_v,move_a;//水平移动速度,
 39 int line_x,line_old_x,line_y,line_l,line_old_l;//伸长部分x,老x,y,长,老长
 40 //--------------------------------------------------------------
 41 void init1()
 42 {
 43     b_x=40,b_y=120,b_l=100,b_w=420;
 44     m_x=m_old_x=b_x+10,m_y=b_y-10,m_l=120,m_w=50,m_v=1,m_a=0,m_l_limit_p=40,m_r_limit_p=b_x+b_w-m_l_limit_p;
 45     s_y=s_old_y=b_y+10,s_extre_part=10,s_v=1,s_a=0,s_u_limit_p=b_y+10,s_d_limit_p=b_y+b_l-10;
 46 }
 47 void init2()
 48 {
 49     h_x=b_x,h_y=b_y+b_l+60,h_w=b_w;
 50     move_x_v=s_v*h_w/m_l,move_y_v=2,move_a=0;
 51     line_x=line_old_x=100,line_y=h_y+3,line_l=line_old_l=50;
 52 }
 53 //---------------------------Draw-------------------------------
 54 void drawBig()
 55 {
 56     Line(b_x,b_y,b_x+b_w,b_y,Black);
 57     Line(b_x,b_y+b_l,b_x+b_w,b_y+b_l,Black);
 58 }//主梁画
 59 void drawMiddle()
 60 {
 61     if(m_x!=m_old_x)Line(m_old_x,m_y,m_old_x,m_y+m_l,White);
 62     Line(m_x,m_y,m_x,m_y+m_l,Blue);
 63     if(m_x!=m_old_x)Line(m_old_x+m_w,m_y,m_old_x+m_w,m_y+m_l,White);
 64     Line(m_x+m_w,m_y,m_x+m_w,m_y+m_l,Blue);
 65 }//画横梁
 66 void drawSmall()
 67 {
 68     if(s_old_y!=s_y || m_x!=m_old_x)Line(m_old_x-s_extre_part,s_old_y,m_old_x+m_w+s_extre_part,s_old_y,White);
 69     Line(m_x-s_extre_part,s_y,m_x+m_w+s_extre_part,s_y,Red);
 70 }//画小车
 71 void draw1()
 72 {
 73     drawBig();//画主梁
 74     drawMiddle();//画横梁
 75     drawSmall();//画小车
 76 }//总画函数
 77 //----------------------------run-----------------------------
 78 void runMiddle()
 79 {
 80     m_old_x=m_x;
 81     m_x+=m_v;
 82     if(m_x+m_w>=m_r_limit_p || m_x<=m_l_limit_p)m_v*=-1;//达到警戒线
 83 }//横梁移动
 84 void runSmall()
 85 {
 86     s_old_y=s_y;
 87     line_old_x=line_x;
 88     s_y+=s_v;
 89     line_x+=move_x_v;
 90     if(s_y>=s_d_limit_p || s_y<=s_u_limit_p){
 91         s_v*=-1;
 92         move_x_v*=-1;
 93     }//达到警戒线
 94 }//小车移动
 95 void run1()
 96 {
 97     runMiddle();
 98     runSmall();
 99 }//运动函数
100 /
101 //-------------------------draw--------------------------------
102 void drawGou()
103 {
104     if(line_old_x!=line_x || line_old_l!=line_old_l){
105         Rectangle(line_old_x-3,line_y+line_old_l,line_old_x+3,line_y+line_old_l+6,White);
106         Line(line_old_x,line_y+line_old_l+6,line_old_x,line_y+line_old_l+9,White);
107         Line(line_old_x,line_y+line_old_l+9,line_old_x+6,line_y+line_old_l+9,White);
108         Line(line_old_x+6,line_y+line_old_l+9,line_old_x+6,line_y+line_old_l+15,White);
109         Line(line_old_x+6,line_y+line_old_l+15,line_old_x-6,line_y+line_old_l+15,White);
110         Line(line_old_x-6,line_y+line_old_l+15,line_old_x-6,line_y+line_old_l+12,White);
111     }
112     Rectangle(line_x-3,line_y+line_l,line_x+3,line_y+line_l+6,Blue);
113     Line(line_x,line_y+line_l+6,line_x,line_y+line_l+9,Black);
114     Line(line_x,line_y+line_l+9,line_x+6,line_y+line_l+9,Black);
115     Line(line_x+6,line_y+line_l+9,line_x+6,line_y+line_l+15,Black);
116     Line(line_x+6,line_y+line_l+15,line_x-6,line_y+line_l+15,Black);
117     Line(line_x-6,line_y+line_l+15,line_x-6,line_y+line_l+12,Black);
118 }//画勾,x,y为绳的下端,r为大小
119 void drawH()
120 {
121     Line(h_x,h_y,h_x+h_w,h_y,Black);
122 }//画横梁
123 void drawHuaKuai()
124 {
125     if(line_old_x!=line_x)Rectangle(line_old_x-6*3/4,line_y-6,line_old_x+6*3/4,line_y,White);
126     Rectangle(line_x-6*3/4,line_y-6,line_x+6*3/4,line_y,Blue);
127 }//画滑块,x,y为绳的上端,r为大小
128 void drawLine()
129 {
130     if(line_old_l!=line_l || line_x!=line_old_x)Line(line_old_x,line_y,line_old_x,line_y+line_old_l,White);
131     Line(line_x,line_y,line_x,line_y+line_l,Black);
132 }//画线
133 void draw2()
134 {
135     drawH();
136     drawHuaKuai();
137     drawLine();
138     drawGou();
139 }
140 ///
141 //-------------------------draw尺子--------------------------------
142 void draw0()
143 {
144     GUI_SetColor(GUI_YELLOW);
145     GUI_FillRect(b_x-15,b_y-15,b_x+b_w+15,h_y+190);
146      Rectangle(b_x-15,b_y-15,b_x+b_w+15,h_y+190,GUI_BLUE);//画边框
147 }
148 ///
149 void Fun(void)//fun里面的Fun函数------一切动画贴图都在此
150 {
151     init1();//初始化1画面
152     init2();//初始化2画面
153     GUI_SetBkColor(WHITE);
154     GUI_Clear();
155     //GUI_DrawBitmap(&bmkk,0,0);
156     draw0();
157     while(1)
158     {
159         run1();
160         line_old_l=line_l;
161         line_l+=1;
162         if(line_l>160)line_l=10;
163         draw1();
164         draw2();
165         GUI_Delay(1);
166     }
167 }

转载于:https://www.cnblogs.com/zjutlitao/p/3737528.html

[stm32] 利用uc-gui封装画图和画线函数移植51上的模拟动画相关推荐

  1. VC++ 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor

    目录 利用MFC的CWindowDC类实现画线功能 在桌面窗口中画线 绘制彩色线条 CPen nPenStyle nWidth crColor 接上:VC++ 绘制线条 OnLButtonDown函数 ...

  2. VC++ 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能

    目录 绘制线条 OnLButtonDown函数(DrawView.cpp) 利用SDK全局函数实现画线功能 利用MFC的CDC类实现画线功能 利用MFC的CClientDC类实现画线功能 接上:VC+ ...

  3. MiniGUI中的几个画线函数

    之前的项目中有场景需要绘制曲线,但是当时没有解决,用折线代替的,今天下午借助官方demo,又看了下minigui中的几个画线函数,这里记录一下(lineTo,moveTo, lineEx暂不解释,看官 ...

  4. Graphics.h画线函数和初始化绘制环境

    昨天帮同学做了个课程实验(一个非计算机专业同学),有看到了graphics.h这个头文件,还记得在大一的时候刚刚接触C语言,一片茫然(当时0基础学习计算机,刚刚学会上网),还好寝室有大神带着,一步一步 ...

  5. 利用BP神经网络教计算机进行非线函数拟合

    利用BP神经网络教计算机进行非线函数拟合 本图文已经更新,详细地址如下: http://blog.csdn.net/lsgo_myp/article/details/54425751

  6. 利用BP神经网络教计算机进行非线函数拟合(代码部分多层)

    利用BP神经网络教计算机进行非线函数拟合(代码部分多层) 本图文已经更新,详细地址如下: http://blog.csdn.net/lsgo_myp/article/details/54425751

  7. 画线函数Glib_Line算法的研究

      在这里首先先简单把我对函数的功能的理解阐述一下,方便后面的分析:Glib_Line函数实现的功能是通过参数给定(x1,y1,x2,y2,color),来确定起点(x1,y1)和终点(x2,y2)两 ...

  8. python绘制多个散点图_如何利用python把多个散点图画在一张图上:一个案例

    如果你想做很多个散点图,却又不想使用Excel一个一个地画,一张一张图调整. 那么你可以考虑使用Python. 首先,需要安装并启动anaconda3,过程略. 开始写代码了. 01 基本库的导入,以 ...

  9. html文字前画线代码,在div上画线

    拖动 要在div上拖放图标,我可以在div上放置图标并轻松拖动它们.但我不知道如何实现"Scribble"功能(例如,使用类似鼠标的笔在div上画线,就像在画布上一样). 下面是我 ...

最新文章

  1. Mybatis的各种查询功能
  2. 图解深度学习(图灵出品)
  3. vc6 C/C++的64位整型
  4. 【C语言】接收字符,大小写字符相互转换后输出,数字不输出
  5. VC++6.0出现no compile tool is associated with the extension.解决方法
  6. Servlet_生命周期详解
  7. struts2中jsp页面上验证码的生成
  8. caffe专题五——回归中——检测框架
  9. php数组去掉键值,PHP 如何将数组去掉键值?_后端开发
  10. 6月14号=》136页-145页
  11. pythonnet 引用_Python netmiko模块的使用
  12. 在vmplayer上扩展ubantu系统的硬盘大小,并进入ubantu进行更改
  13. VisionPro工具说明
  14. mybatis 的大于号 小于号 大于等于 小于等于
  15. 比较结构的关联词(二)
  16. goldendict在线子典 goldendict
  17. 向量个数,向量维数,向量空间维数
  18. 【超级干huo】用c语言制作游戏地图【可自定义】
  19. GeForce MX150相对应的NVIDIA CUDA版本_七彩虹ProMaster A1设计师电脑评测:RTX 3080加持 生产力大提升|七彩虹|gpu|nvidia|amd|英特尔|显卡...
  20. android 手动连接wifi,android手动连接wifi的过程

热门文章

  1. 吉林大学java期末试卷_吉大18年9月《JAVA程序设计》作业考核试题-0001
  2. https 慢_dba+开源工具:可视化分析MongoDB慢查询日志
  3. datagridviewrow 行宽_C# Winform DataGridView实现行[Row]的上下移动…….. | 学步园
  4. 围成一圈的排列组合问题_行测技巧:巧解环形排列组合
  5. Postman接口测试工具学习笔记(一)接口测试概念及Postman入门
  6. A股收盘:深证区块链50指数跌1.75%,*ST群兴、亚联发展涨停
  7. SAP License:SAP 中的不平
  8. 从企金的授信方案延申到个金授信的思考
  9. 智慧、智能图书馆管理平台系统+web端业务数据管理平台+Axure通用web端高保真交互业务数据管理平台+铭牌管理+设备监控+系统管理+内容管理+机构列表管理+用户权限管理+专题管理+服务包管理
  10. Python之Django之views中视图代码重复查询的优化