当前位置: 首页 > news >正文

MFC绘制哆啦A梦

文章目录

    • OnPaint绘制代码
    • 完整Visual Studio工程下载
    • 其他卡通人物绘制

在这里插入图片描述

OnPaint绘制代码

		CPaintDC dc(this); // 用于绘画的设备上下文CRect rc;GetWindowRect(rc);int cxClient = rc.Width();int cyClient = rc.Height();// 辅助线HPEN hPen = CreatePen(PS_DOT, 1, RGB(192, 192, 192));HPEN hOldPen = (HPEN)SelectObject(dc, hPen);MoveToEx(dc, cxClient / 2, 0, NULL);LineTo(dc, cxClient / 2, cyClient);MoveToEx(dc, 0, cyClient / 2, NULL);LineTo(dc, cxClient, cyClient / 2);SelectObject(dc, hOldPen);// 头 直径240HBRUSH hBlueBrush = CreateSolidBrush(RGB(0, 159, 232));HBRUSH hOldBrush = (HBRUSH)SelectObject(dc, hBlueBrush);DrawEllipse(&dc, cxClient / 2 - 120, cyClient / 2 - 200, cxClient / 2 + 120, cyClient / 2 + 40,RGB(0, 0, 0), RGB(0, 159, 232));SelectObject(dc, hOldBrush);// 脸 直径200 DrawEllipse(&dc, cxClient / 2 - 100, cyClient / 2 - 160, cxClient / 2 + 100, cyClient / 2 + 40,RGB(0,0,0), RGB(255,255,255));//眼睛hOldBrush = DrawEyes(hOldBrush, dc, cxClient, cyClient);// 鼻子HBRUSH hRedBrush = CreateSolidBrush(RGB(255, 0, 0));hOldBrush = (HBRUSH)SelectObject(dc, hRedBrush);DrawEllipse(&dc, cxClient / 2 - 10, cyClient / 2 - 135, cxClient / 2 + 10, cyClient / 2 - 115,RGB(0, 0, 0), RGB(255, 0, 0));SelectObject(dc, hOldBrush);MoveToEx(dc, cxClient / 2, cyClient / 2 - 115, NULL);LineTo(dc, cxClient / 2, cyClient / 2 - 30);// 嘴巴Arc(dc, cxClient / 2 - 70, cyClient / 2 - 120, cxClient / 2 + 70, cyClient / 2 - 30,cxClient / 2 - 60, cyClient / 2 - 50, cxClient / 2 + 60, cyClient / 2 - 50);// 胡须  中上下DrawBeard(dc, cxClient, cyClient);// 身体hOldBrush = (HBRUSH)SelectObject(dc, hBlueBrush);Rectangle(dc, cxClient / 2 - 100, cyClient / 2 - 10, cxClient / 2 + 100, cyClient / 2 + 150);SelectObject(dc, hOldBrush);// 肚皮Ellipse(dc, cxClient / 2 - 70, cyClient / 2 - 20, cxClient / 2 + 70, cyClient / 2 + 120); // 圆hPen = CreatePen(PS_DOT, 1, RGB(255, 255, 255)); // 擦除肚皮上面嘴巴下面的圆弧hOldPen = (HPEN)SelectObject(dc, hPen);Arc(dc, cxClient / 2 - 70, cyClient / 2 - 20, cxClient / 2 + 70, cyClient / 2 + 120,cxClient / 2 + 60, cyClient / 2 - 10, cxClient / 2 - 60, cyClient / 2 - 10);SelectObject(dc, hOldPen);// 围脖hOldBrush = (HBRUSH)SelectObject(dc, hRedBrush);RoundRect(dc, cxClient / 2 - 102, cyClient / 2 - 12, cxClient / 2 + 102, cyClient / 2 + 5, 20, 20);SelectObject(dc, hOldBrush);// 铃铛HBRUSH hYellowBrush = CreateSolidBrush(RGB(255, 255, 0));hOldBrush = (HBRUSH)SelectObject(dc, hYellowBrush);Ellipse(dc, cxClient / 2 - 12, cyClient / 2 - 4, cxClient / 2 + 12, cyClient / 2 + 20);RoundRect(dc, cxClient / 2 - 12, cyClient / 2 + 3, cxClient / 2 + 12, cyClient / 2 + 6, 20, 20);SelectObject(dc, hRedBrush);Ellipse(dc, cxClient / 2 - 5, cyClient / 2 + 8, cxClient / 2 + 5, cyClient / 2 + 18);SelectObject(dc, hOldBrush);// 裤腿Ellipse(dc, cxClient / 2 - 20, cyClient / 2 + 130, cxClient / 2 + 20, cyClient / 2 + 170); // 画圆hPen = CreatePen(PS_DOT, 1, RGB(255, 255, 255)); // 擦除肚皮下面嘴巴上面的圆弧hOldPen = (HPEN)SelectObject(dc, hPen);Arc(dc, cxClient / 2 - 20, cyClient / 2 + 130, cxClient / 2 + 20, cyClient / 2 + 170,cxClient / 2 - 20, cyClient / 2 + 150, cxClient / 2 + 20, cyClient / 2 + 150);SelectObject(dc, hOldPen);// 口袋Pie(dc, cxClient / 2 - 50, cyClient / 2, cxClient / 2 + 50, cyClient / 2 + 100,cxClient / 2 - 50, cyClient / 2 + 50, cxClient / 2 + 50, cyClient / 2 + 50);// 脚掌Ellipse(dc, cxClient / 2 - 110, cyClient / 2 + 135, cxClient / 2 - 10, cyClient / 2 + 165);Ellipse(dc, cxClient / 2 + 10, cyClient / 2 + 135, cxClient / 2 + 110, cyClient / 2 + 165);// 胳膊POINT apt[4];hOldBrush = (HBRUSH)SelectObject(dc, hBlueBrush);apt[0].x = cxClient / 2 - 100;apt[0].y = cyClient / 2;apt[1].x = cxClient / 2 - 150;apt[1].y = cyClient / 2 + 60;apt[2].x = cxClient / 2 - 140;apt[2].y = cyClient / 2 + 80;apt[3].x = cxClient / 2 - 100;apt[3].y = cyClient / 2 + 60;Polygon(dc, apt, 4);SelectObject(dc, hOldBrush);Ellipse(dc, cxClient / 2 - 168, cyClient / 2 + 60, cxClient / 2 - 138, cyClient / 2 + 90); // 左手掌hOldBrush = (HBRUSH)SelectObject(dc, hBlueBrush);apt[0].x = cxClient / 2 + 100;apt[0].y = cyClient / 2;apt[1].x = cxClient / 2 + 150;apt[1].y = cyClient / 2 + 60;apt[2].x = cxClient / 2 + 140;apt[2].y = cyClient / 2 + 80;apt[3].x = cxClient / 2 + 100;apt[3].y = cyClient / 2 + 60;Polygon(dc, apt, 4);SelectObject(dc, hOldBrush);Ellipse(dc, cxClient / 2 + 168, cyClient / 2 + 60, cxClient / 2 + 138, cyClient / 2 + 90); // 右手掌// 		// 左手举着小风车
// 		MoveToEx(dc, cxClient / 2 - 160, cyClient / 2 + 62, NULL);
// 		LineTo(dc, cxClient / 2 - 160, cyClient / 2 - 40);
// 		DrawWindmill(dc, cxClient / 2 - 160, cyClient / 2 - 40);
// 
// 		// 右手举着小风车
// 		MoveToEx(dc, cxClient / 2 + 160, cyClient / 2 + 62, NULL);
// 		LineTo(dc, cxClient / 2 + 160, cyClient / 2 - 40);
// 		DrawWindmill(dc, cxClient / 2 + 160, cyClient / 2 - 40);// 左手举着五星红旗MoveToEx(dc, cxClient / 2 - 160, cyClient / 2 + 62, NULL);LineTo(dc, cxClient / 2 - 160, cyClient / 2 - 40);DrawFlagChina(dc, cxClient / 2 - 160+1, cyClient / 2 - 40);// 右手举着奥运五环旗MoveToEx(dc, cxClient / 2 + 160, cyClient / 2 + 62, NULL);LineTo(dc, cxClient / 2 + 160, cyClient / 2 - 40);DrawFlagOlympics(dc, cxClient / 2 + 160, cyClient / 2 - 40);// 去多余线,增强立体感hPen = CreatePen(PS_SOLID, 2, RGB(0, 159, 232));hOldPen = (HPEN)SelectObject(dc, hPen);MoveToEx(dc, cxClient / 2 - 100, cyClient / 2, NULL);LineTo(dc, cxClient / 2 - 100, cyClient / 2 + 50);MoveToEx(dc, cxClient / 2 + 100, cyClient / 2, NULL);LineTo(dc, cxClient / 2 + 100, cyClient / 2 + 50);SelectObject(dc, hOldPen);// 清理资源DeleteObject(hPen);DeleteObject(hBlueBrush);DeleteObject(hRedBrush);DeleteObject(hYellowBrush);

完整Visual Studio工程下载

点击前往下载

其他卡通人物绘制

https://blog.csdn.net/wang161019/article/details/139872513
点击前往下载
在这里插入图片描述

http://www.lryc.cn/news/379120.html

相关文章:

  • 网络编程(TCP协议,UDP协议)
  • 读取Jar包下文件资源的问题及解决方案
  • C++ 反转一个二进制串
  • 黑神话悟空-吉吉国王版本【抢先版】
  • 【尚庭公寓SpringBoot + Vue 项目实战】预约看房与租约管理(完结)
  • java拼图小游戏项目
  • [C++][数据结构][跳表]详细讲解
  • tinyxml
  • Docker(三)-Docker常用命令
  • [MRCTF2020]PixelShooter
  • vue实现的商品列表网页
  • 【泛微系统】e-cology非标配功能概览
  • Python基础教程(二十八):pip模块
  • 通信系统概述
  • http发展史(http0.9、http1.0、http1.1、http/2、http/3)详解
  • Hadoop 面试题(四)
  • 绽放光彩的小程序 UI 风格
  • 电脑文件夹怎么加密?文件夹加密的5种方法
  • 异步复位同步释放
  • JupyterLab使用指南(七):JupyterLab使用 LaTeX 生成数学公式
  • docker 环境部署
  • Spring中的ContextPath总结
  • C++设计模式——Composite组合模式
  • Android提供的LruCache类简介(1)
  • 【分布式系列】分布式锁timeout了怎么办?
  • System.getProperty()方法总结
  • 大型语言模型在AMD GPU上的推理优化
  • Apple - Core Foundation Design Concepts
  • lua中的lfs库介绍
  • PyCharm 快捷键积累