原始日期:2014-03-29 20:35

众所周知,google的安卓机器人形象十分经典,包括眼睛的位置,胳膊以及天线的位置都是有固定位置和比例的,而且是最恰当的,看起来最美。而微软基础类库MFC绘图本领十分强大,相比之前Turbo C,强的不是一丁半点,其可以绘制出各种复杂炫丽的图形,不过我今天做的是一个十分简单的绘图,用刷子CBrush,画笔CPen,矩形Rectangle和椭圆Ellipse来画一个安卓机器人,没有画文字,十分简单。下面是效果图和对比图:

对比图:                                                                                         效果图:

代码写在View类中的OnDraw函数中,非常简单,以下为代码:

CRect rect;
 GetClientRect(&rect);
 pDC->SetMapMode(MM_ANISOTROPIC);
 pDC->SetWindowExt(rect.Width(),rect.Height());
 pDC->SetViewportExt(rect.Width(),-rect.Height());
 pDC->SetViewportOrg(rect.Width()/2,rect.Height()/2);/*使用MM_ANISOTROPIC模式自定义中心为原点的直角坐标系*/
 
 //机器人的脸
 CBrush NewBrush,*pOldBrush;
 NewBrush.CreateSolidBrush(RGB(151,192,61));
 pOldBrush=pDC->SelectObject(&NewBrush);
 pDC->Ellipse(-80,-10,80,110);
 NewBrush.DeleteObject();
  
 CPen NewPen,*pOldPen;
 NewPen.CreatePen(PS_SOLID,1,RGB(151,192,61));
 pOldPen=pDC->SelectObject(&NewPen);
 pDC->Ellipse(-80,-10,80,110);
 NewPen.DeleteObject();

//脖子
 NewBrush.CreateSolidBrush(RGB(255,255,255));
 pOldBrush=pDC->SelectObject(&NewBrush);
 pDC->Rectangle(-80,-50,80,55);
 NewBrush.DeleteObject();

NewPen.CreatePen(PS_SOLID,1,RGB(255,255,255));
 pOldPen=pDC->SelectObject(&NewPen);
 pDC->Rectangle(-80,-50,80,55);
 NewPen.DeleteObject();
 
 //刷子画机器人身体
 NewBrush.CreateSolidBrush(RGB(151,192,61));
 pOldBrush=pDC->SelectObject(&NewBrush);
 pDC->Rectangle(-80,-100,80,40);
 NewBrush.DeleteObject();
 
 NewPen.CreatePen(PS_SOLID,1,RGB(151,192,61));
 pOldPen=pDC->SelectObject(&NewPen);
 pDC->Rectangle(-80,-100,80,40);
 NewPen.DeleteObject();

//刷子画眼睛
 NewBrush.CreateSolidBrush(RGB(255,255,255));
 pOldBrush=pDC->SelectObject(&NewBrush);
 pDC->Ellipse(-45,70,-25,90);//左眼睛
 pDC->Ellipse(25,70,45,90);//右眼睛
 NewBrush.DeleteObject();

//四肢
 NewBrush.CreateSolidBrush(RGB(151,192,61));
 pOldBrush=pDC->SelectObject(&NewBrush);
  //左胳膊
 pDC->Ellipse(90,15,130,55);
 pDC->Ellipse(90,-70,130,-30);
 pDC->Rectangle(90,35,130,-50);
  //右胳膊
 pDC->Ellipse(-130,15,-90,55);
 pDC->Ellipse(-130,-70,-90,-30);
 pDC->Rectangle(-130,35,-90,-50);
  //左腿
 pDC->Ellipse(-55,-170,-15,-130);
 pDC->Rectangle(-55,-100,-15,-150);
  //右腿
 pDC->Ellipse(15,-170,55,-130);
 pDC->Rectangle(15,-100,55,-150);

NewBrush.DeleteObject();

NewPen.CreatePen(PS_SOLID,5,RGB(151,192,61));
 pOldPen=pDC->SelectObject(&NewPen);
 pDC->MoveTo(-30,105);
 pDC->LineTo(-50,130);

//天线
 pDC->MoveTo(30,105);
 pDC->LineTo(50,130);

MFC简单绘制安卓机器人的更多相关文章

  1. TensorFlow练习13: 制作一个简单的聊天机器人

    现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...

  2. 用Go语言实现一个简单的聊天机器人

    一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...

  3. MFC图形绘制——绘制直尺和坐标系

    一.实验目的 1.掌握建立MFC应用程序的方法: 2.掌握映射模式. 二.实验内容 1.在MFC中绘制直尺,直尺需要有刻度,类似于日常学生使用的透明塑料直尺,需要建立四个直尺,分别分布在屏幕客户区的上 ...

  4. 用canvas绘制android机器人

    直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...

  5. CorelDRAW简单绘制的一杯满满的橙汁教程

    CorelDRAW怎么画一杯橙汁?方法很简单,首先绘制一个闭合路径,执行线性渐变,填充颜色:复制图形,使用刻刀工具裁剪两半,更改不透明度:然后为橙汁增加底部椭圆:修剪橙子片:绘制吸管:最后加上一层橙子 ...

  6. h5-圆角的使用-案例安卓机器人

    1.圆角的使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...

  7. Android中使用Canvas和Paint绘制一个安卓机器人

    场景 在Android中画笔使用Paint类,画布使用Canvas类来表示. 绘图的基本步骤 首先编写一个继承自View的自定义View类,然后重写其onDraw方法,最后把自定义的view添加到ac ...

  8. Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)

    1,关于Rect和RectF类的区别以前一直没有去关注它,刚刚了解了一下才知道都是用来确定矩形的区域,不过Rect是int类型的坐标而RectF是float类型的坐标,所以说RectF要更加精确.现在 ...

  9. 一个简单的多机器人编队算法实现--PID

    用PID进行领航跟随法机器人编队控制 课题2:多机器人编队控制研究对象:两轮差动的移动机器人或车式移动机器人研究内容:平坦地形,编队的保持和避障,以及避障和队形切换算法等:起伏地形,还要考虑地形情况对 ...

随机推荐

  1. MySQL ProxySQL读写分离使用初探

    目的 在美团点评DBProxy读写分离使用说明文章中已经说明了使用目的,本文介绍ProxySQL的使用方法以及和DBProxy的性能差异.具体的介绍可以看官网的相关说明,并且这个中间件也是percon ...

  2. [刷题]ACM/ICPC 2016北京赛站网络赛 第1题 第3题

    第一次玩ACM...有点小紧张小兴奋.这题目好难啊,只是网赛就这么难...只把最简单的两题做出来了. 题目1: 代码: //#define _ACM_ #include<iostream> ...

  3. rsyslog管理分布式日志

    [TOC] 背景 有一个4台机器的分布式服务,不多不少,上每台机器上查看日志比较麻烦,用Flume,Logstash.ElasticSearch.Kibana等分布式日志管理系统又显得大材小用,所以想 ...

  4. MyBatis源码解读(3)——MapperMethod

    在前面两篇的MyBatis源码解读中,我们一路跟踪到了MapperProxy,知道了尽管是使用了动态代理技术使得我们能直接使用接口方法.为巩固加深动态代理,我们不妨再来回忆一遍何为动态代理. 我相信在 ...

  5. 必知的 15 个jQuery小技巧(干货)

    jQuery小技巧(干活) 1.返回顶部按钮 你可以利用 animate 和 scrollTop 来实现返回顶部的动画,而不需要使用其他插件. $('a.top').click(function(){ ...

  6. JSP Cookie的使用

    Cookie 通常用于网站记录客户的某些信息,比如客户的用户名及客户的喜好等.一旦用户下次登录,网站可以获取到客户的相关信息,根据这些客户信息,网站可以对客户提供更友好的服务. Cookie sess ...

  7. 5.Java 加解密技术系列之 DES

    Java 加解密技术系列之 DES 序 背景 概念 基本原理 主要流程 分组模式 代码实现 结束语 序 前 几篇文章讲的都是单向加密算法,其中涉及到了 BASE64.MD5.SHA.HMAC 等几个比 ...

  8. 开涛spring3(6.4) - AOP 之 6.4 基于@AspectJ的AOP

    Spring除了支持Schema方式配置AOP,还支持注解方式:使用@AspectJ风格的切面声明. 6.4.1  启用对@AspectJ的支持 Spring默认不支持@AspectJ风格的切面声明, ...

  9. java虚拟机学习-JVM调优总结(6)

    1.Java对象的大小 基本数据的类型的大小是固定的,这里就不多说了.对于非基本类型的Java对象,其大小就值得商榷. 在Java中,一个空Object对象的大小是8byte,这个大小只是保存堆中一个 ...

  10. JQuery模拟实现天猫购物车动画效果

    测试程序源代码下载地址:源码 一.功能描述: 1.点击购买按钮,模拟抛物线将物品弹到购物车里: 2.购物车添加物品后,显示+1动画: 效果图如下: 实现如下: 1.导入jquery相关的包: < ...