MFC简单绘制安卓机器人
原始日期: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简单绘制安卓机器人的更多相关文章
- TensorFlow练习13: 制作一个简单的聊天机器人
现在很多卖货公司都使用聊天机器人充当客服人员,许多科技巨头也纷纷推出各自的聊天助手,如苹果Siri.Google Now.Amazon Alexa.微软小冰等等.前不久有一个视频比较了Google N ...
- 用Go语言实现一个简单的聊天机器人
一.介绍 目的:使用Go语言写一个简单的聊天机器人,复习整合Go语言的语法和基础知识. 软件环境:Go1.9,Goland 2018.1.5. 二.回顾 Go语言基本构成要素:标识符.关键字.字面量. ...
- MFC图形绘制——绘制直尺和坐标系
一.实验目的 1.掌握建立MFC应用程序的方法: 2.掌握映射模式. 二.实验内容 1.在MFC中绘制直尺,直尺需要有刻度,类似于日常学生使用的透明塑料直尺,需要建立四个直尺,分别分布在屏幕客户区的上 ...
- 用canvas绘制android机器人
直接上代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UT ...
- CorelDRAW简单绘制的一杯满满的橙汁教程
CorelDRAW怎么画一杯橙汁?方法很简单,首先绘制一个闭合路径,执行线性渐变,填充颜色:复制图形,使用刻刀工具裁剪两半,更改不透明度:然后为橙汁增加底部椭圆:修剪橙子片:绘制吸管:最后加上一层橙子 ...
- h5-圆角的使用-案例安卓机器人
1.圆角的使用 <!DOCTYPE html> <html lang="en"> <head> <meta charset="U ...
- Android中使用Canvas和Paint绘制一个安卓机器人
场景 在Android中画笔使用Paint类,画布使用Canvas类来表示. 绘图的基本步骤 首先编写一个继承自View的自定义View类,然后重写其onDraw方法,最后把自定义的view添加到ac ...
- Android -- 自定义View小Demo,关于Rect绘制Android机器人(一)
1,关于Rect和RectF类的区别以前一直没有去关注它,刚刚了解了一下才知道都是用来确定矩形的区域,不过Rect是int类型的坐标而RectF是float类型的坐标,所以说RectF要更加精确.现在 ...
- 一个简单的多机器人编队算法实现--PID
用PID进行领航跟随法机器人编队控制 课题2:多机器人编队控制研究对象:两轮差动的移动机器人或车式移动机器人研究内容:平坦地形,编队的保持和避障,以及避障和队形切换算法等:起伏地形,还要考虑地形情况对 ...
随机推荐
- 安卓OKhttp请求封装
目前安卓开发中使用的网络工具为OKhttp,但是okhttp的使用还不是很方便,在okhttp的基础上再对请求进行封装会极大的方便网络调用. 下面直接上代码. 请求封装 public class Ht ...
- realmock 前后端分离方案
realmock 前后端分离方案 express + randomjson 模拟后端服务,前端服务器(比如webpack, nigix等)将请求代理到该服务器地址即可 github地址:https:/ ...
- hdu3336 Count the string kmp+dp
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 很容易想到用kmp 这里是next数组的应用 定义dp[i]表示以s[i]结尾的前缀的总数 那么 ...
- 如何在WebGL全景图上做标记
WebGL可以用来做3D效果的全景图呈现,例如故宫的全景图.但有时候我们不仅仅只是呈现全景图,还需要增加互动.故宫里边可以又分了很多区域,例如外朝中路.外朝西路.外朝东路等等.我们需要在3D图上做一些 ...
- CNPM 遇到use strict的问题
一.问题描述 [root@VM_123_144_centos node01]# cnpm install --save nodemailer /usr/lib/node_modules/cnpm/no ...
- 使用adb报错;error: unknown host service
用adb往虚拟机Genymotion上安装apk时报错 报这个错误是因为主机端口5037被占用 接下来就要查看5037被哪个应用程序占用,然后结束该程序,才能使用adb 在cmd输入命令netstat ...
- 1254 Flip and Shift
这题是目的是把黑球和白球分开连续放,事实上只要把其中一种颜色分好在一边就可以,可以绕一个球转即是第n个球可以放在n-2或者n+2上,因为这是个环,所以只需要把黑球或者白球连续放好就可以,当一共有奇数个 ...
- bootstrap4中文版(纯手工翻译)
1初步开始 1.1依赖 这个仓储包含一系列基于bootstrap标识和css样式的原生angular2指令.所以是不需要依赖jq和bootstrap.js的.只需要以下依赖即可: Angular(需要 ...
- 几个常用的linux快捷键和shell知识
1) !$ !$是一个特殊的环境变量,它代表了上一个命令的最后一个字符串.如:你可能会这样: $mkdir mydir $mv mydir yourdir $cd y ...
- 你知道“移动端车牌识别”可以嵌入到PDA中应用吗?
一.移动端车牌识别产品描述 移动端车牌识别软件是基于移动平台的OCR识别应用程序,支持Android/IOS等多种主流移动操作系统.该产品只需通过智能手机或Pad的摄像头对准车牌,无需拍照,实现自动采 ...