MFC GDI绘制卡通人物

文章目录

    • 主要代码
    • 完整visual studio工程下载

主要代码

// DrawFrogView.cpp : implementation of the CDrawFrogView class
//

#include "stdafx.h"
#include "DrawFrog.h"

#include "DrawFrogDoc.h"
#include "DrawFrogView.h"

#include "math.h"
#define PI 3.14

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/
// CDrawFrogView

IMPLEMENT_DYNCREATE(CDrawFrogView, CView)

BEGIN_MESSAGE_MAP(CDrawFrogView, CView)
	//{{AFX_MSG_MAP(CDrawFrogView)
		// NOTE - the ClassWizard will add and remove mapping macros here.
		//    DO NOT EDIT what you see in these blocks of generated code!
	//}}AFX_MSG_MAP
	// Standard printing commands
	ON_COMMAND(ID_FILE_PRINT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_DIRECT, CView::OnFilePrint)
	ON_COMMAND(ID_FILE_PRINT_PREVIEW, CView::OnFilePrintPreview)
END_MESSAGE_MAP()

/
// CDrawFrogView construction/destruction

CDrawFrogView::CDrawFrogView()
{
	// TODO: add construction code here

}

CDrawFrogView::~CDrawFrogView()
{
}

BOOL CDrawFrogView::PreCreateWindow(CREATESTRUCT& cs)
{
	// TODO: Modify the Window class or styles here by modifying
	//  the CREATESTRUCT cs

	return CView::PreCreateWindow(cs);
}

/
// CDrawFrogView drawing

void CDrawFrogView::OnDraw(CDC* pDC)
{
	CDrawFrogDoc* pDoc = GetDocument();
	ASSERT_VALID(pDoc);
	// TODO: add draw code for native data here
	RedFlag();
	Flagpole(400,100,405,500);
	Flagpole(900,100,905,500);
	
	//五角星的五个点位置
	FiveStar(375,125,15,PI/2);
	FiveStar(350,110,5,-atan(3/5));
	FiveStar(340,120,5,-atan(1/7));
	FiveStar(340,135,5,-atan(2/7));
	FiveStar(350,145,5,-atan(4/5));

	//绘制绿色的青蛙
	GreenFrog();

	//奥运五环
	Olinpinic();

}

/
// CDrawFrogView printing

BOOL CDrawFrogView::OnPreparePrinting(CPrintInfo* pInfo)
{
	// default preparation
	return DoPreparePrinting(pInfo);
}

void CDrawFrogView::OnBeginPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add extra initialization before printing
}

void CDrawFrogView::OnEndPrinting(CDC* /*pDC*/, CPrintInfo* /*pInfo*/)
{
	// TODO: add cleanup after printing
}

/
// CDrawFrogView diagnostics

#ifdef _DEBUG
void CDrawFrogView::AssertValid() const
{
	CView::AssertValid();
}

void CDrawFrogView::Dump(CDumpContext& dc) const
{
	CView::Dump(dc);
}

CDrawFrogDoc* CDrawFrogView::GetDocument() // non-debug version is inline
{
	ASSERT(m_pDocument->IsKindOf(RUNTIME_CLASS(CDrawFrogDoc)));
	return (CDrawFrogDoc*)m_pDocument;
}
#endif //_DEBUG

/
// CDrawFrogView message handlers

void CDrawFrogView::RedFlag()
{
	CDC *pDC = GetDC();

	CPen penRed(PS_SOLID,1,RGB(255,0,0));//创建一个红色画笔
	CPen *pOldPen = pDC->SelectObject(&penRed);//简画笔与DC关联

	CBrush brushYellow(RGB(255,0,0));//黄色画刷
	CBrush *pOldBrush = pDC->SelectObject(&brushYellow);//与DC关联

	pDC->SetPolyFillMode(WINDING);//多边形填充颜色

	POINT pts[4] = {{250,100},{400,100},{400,200},{250,200}};//绘制旗帜的大小,注意顺序
	pDC->Polygon(pts,4);
	pDC->SelectObject(pOldPen);//选定当前指定画笔
	pDC->SelectObject(pOldBrush);//选中当前指定画刷
}

void CDrawFrogView::Flagpole(int x0, int y0, int x1, int y1)
{
	CDC *pDC = GetDC();
	CBrush brushBlack(RGB(0,0,0));
	CBrush *OldBrush = pDC->SelectObject(&brushBlack);
	pDC->Rectangle(x0,y0,x1,y1);
}

}


完整visual studio工程下载


点击前往下载

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/743194.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

让TSN DDS运转起来——面向智能汽车的以太网测试解决方案

概述 作为OPEN联盟和AUTOSAR联盟的核心成员,经纬恒润多年来持续为国内外各大OEM和供应商提供车载以太网相关的咨询服务,涵盖TCP/IP、SOME/IP、DDS、诊断、TSN等前沿技术领域的设计和测试。同时,经纬恒润与行业内的合作伙伴紧密合作&#xff0…

Vulnhub靶场DC-4练习

目录 0x00 准备0x01 主机信息收集0x02 站点信息收集0x03 漏洞查找与利用1. 爆破登录2. 命令执行3. 反弹shell4. hydra爆破ssh5. 提权 0x04 总结 0x00 准备 下载链接:https://download.vulnhub.com/dc/DC-4.zip 介绍: DC-4 is another purposely built …

【精品案例】数字孪生技术与数字工厂案例(59页PPT)

引言:随着工业4.0和智能制造的快速发展,数字孪生技术和数字工厂已成为制造业转型升级的重要趋势。数字孪生技术通过构建虚拟的数字模型,实现对物理实体全生命周期的映射与仿真,为企业的产品研发、设计、制造等提供有力支持。而数字…

如何评估SD-WAN专线带宽、确保网络性能

网络带宽的充足与否直接关系到业务的正常运作和用户的使用体验。为了确保最佳效果,SD-WAN专线的带宽需要根据企业的规模和具体网络需求进行详细评估。评估过程中需充分考虑实时应用、用户数量、分支机构间的连接以及业务特点。本文将探讨以下问题:SD-WAN…

基于Java的4S店车辆管理系统

你好,我是计算机专业的毕业生,很高兴与您分享我的毕业设计。 开发语言:Java 数据库:MySQL 技术:Java、SpringBoot、B/S模式 工具:MyEclipse、MySQL 系统展示 首页 个人中心 销售员管理界面 车辆维修管…

Ubuntu安装NVIDIA驱动

目录 安装gcc 安装NVIDIA驱动 检查nvidia显卡型号 根据显卡型号下载对应的驱动 安装命令 如何卸载 安装gcc 安装显卡驱动需要使用gcc,输入命令检查是否有gcc gcc --version 如果有版本号弹出,说明已经有gcc环境了,没有的则运行以下…

【Docker】存储数据卷

目录 1、挂载数据卷到容器里 2、查询挂载文件 3、容器与主机之间映射共享卷 4、三个容器之间使用共享卷 5、卷数据的备份与恢复 5.1 备份 5.2 恢复 1、挂载数据卷到容器里 docker run -itd --name test02 -v /data nginx docker exec -it test02 bashls / docker inspe…

1.8 HTTP协议结构

我们来看一下HTTP协议到底由哪些部分组成,也就是HTTP协议的结构。知道了这些知识才能在接口测试中游刃有余。 我们看上图,HTTP协议由四部分组成 起始行 描述请求和响应的基本信息。 当是请求时:请求方法是GET,调用的地址&#…

python基础篇(5):None类型

1 None类型 Python中有一个特殊的字面量&#xff1a;None&#xff0c;其类型是&#xff1a;<class NoneType> 无返回值的函数&#xff0c;实际上就是返回了&#xff1a;None这个字面量 None表示&#xff1a;空的、无实际意义的意思 函数返回的None&#xff0c;就表示…

【Linux】使用信号进行进程间通信

&#x1f525;博客主页&#xff1a; 我要成为C领域大神&#x1f3a5;系列专栏&#xff1a;【C核心编程】 【计算机网络】 【Linux编程】 【操作系统】 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 本博客致力于知识分享&#xff0c;与更多的人进行学习交流 ​ ​ 实现原理&a…

深入理解桥接模式(Bridge Pattern)及其实际应用

引言 在软件开发过程中&#xff0c;设计模式为我们提供了优雅且高效的解决方案&#xff0c;以应对常见的设计问题。桥接模式&#xff08;Bridge Pattern&#xff09;作为一种结构型设计模式&#xff0c;旨在将抽象部分与其实现部分分离&#xff0c;使它们可以独立变化&#xf…

MySQL 面试突击指南:核心知识点解析2

事务并发可能引发的问题 MySQL 是一个客户端/服务器架构的软件,对于同一个服务器来说,可以有多个客户端与之连接,每个客户端与服务器连接后,可以称为一个会话(Session)。每个客户端都可以在自己的会话中向服务器发出请求语句,一个请求语句可能是某个事务的一部分,也就…

shell:使用结构化语句(控制流)

许多程序要求对shell脚本中的命令施加一些逻辑流程控制。有一类命令会根据条件使脚本跳 过某些命令。这样的命令通常称为结构化命令(structured command)。 1. if-then、if-then-else、if-then-elif-else 如果该命令的退出状态码是0 (该命令成功运行)&#xff0c;位于then部分…

grpc学习golang版( 二、入门示例)

系列文章目录 第一章 grpc基本概念与安装 第二章 grpc入门示例 文章目录 一、环境二、编写protobuf文件三、编写server服务端四、编写服务端五、测试 一、环境 确保环境已经配置完成&#xff0c;效果如下。不同环境可能导致后续生成的效果不一。 go version protoc --version…

GPT-5:AI新纪元的领航者,多维度的审视与准备

一、引言&#xff1a;GPT-5与AI的多维演进 GPT-5作为AI领域的里程碑式突破&#xff0c;不仅仅代表了技术的飞跃&#xff0c;更预示着社会、文化以及经济等多个层面的深刻变革。从技术的角度看&#xff0c;GPT-5代表着AI在自然语言处理领域的最新高度&#xff1b;而从更宽广的视…

Kafka基本架构

「kafka设计思想」 一个最基本的架构是生产者发布一个消息到Kafka的一个Topic &#xff0c;该Topic的消息存放于的Broker中&#xff0c;消费者订阅这个Topic&#xff0c;然后从Broker中消费消息&#xff0c;下面这个图可以更直观的描述这个场景&#xff1a; 「消息状态&#x…

【SQL Server数据库】简单查询

目录 用SQL语句完成下列查询。使用数据库为SCHOOL数据库 1. 查询学生的姓名、性别、班级名称&#xff0c;并把结果存储在一张新表中。 2. 查询男生的资料。 3. 查询所有计算机系的班级信息。 4&#xff0e;查询艾老师所教的课程号。 5. 查询年龄小于30岁的女同学的学号和姓名。…

OpenAI禁止国区使用:免费国产大模型等你体验!

OpenAI中国停服 国产大模型免费使用 前言 OpenAI不支持中国区域访问 从6月25日开始&#xff0c;OpenAI 宣布了对中国停止提供 API 服务&#xff0c;毫无疑问的说这给国内的开发者带来了很大的不便&#xff0c;之后他们怎么去使用GPT 这类先进大模型方面遇到了难题。不过近期我们…

QT学习积累——在C++中,for循环中使用``与不使用``的区别和联系

目录 引出使用&与不使用&除法的一个坑 总结自定义信号和槽1.自定义信号2.自定义槽3.建立连接4.进行触发 自定义信号重载带参数的按钮触发信号触发信号拓展 lambda表达式返回值mutable修饰案例 引出 QT学习积累——在C中&#xff0c;for循环中使用&与不使用&的…

手把手教你SpringBoot整合日志框架,并附录Log4j2的常用标签大全

前言&#xff1a; 日志是平时在项目中必不可少的东西&#xff0c;下面是SpringBoot3整合日志框架的一些基本要领&#xff0c;主要分为一下几步&#xff1a; 导入日志相关依赖配置日志相关功能实际使用日志 导入日志相关依赖 如果是SpringBoot项目&#xff0c;只要导入 spring-…