1. MFC图形开发基础与环境搭建
作为一名长期从事Windows桌面开发的程序员,我深知MFC(Microsoft Foundation Classes)在图形界面开发中的重要性。虽然现在.NET框架和WPF等技术日益流行,但MFC因其高效性和对Windows API的深度封装,依然是许多传统桌面应用的首选方案。
1.1 MFC图形开发的核心概念
MFC图形开发的核心在于CDC类(设备上下文类),它封装了GDI(图形设备接口)的各种功能。通过CDC,我们可以轻松实现:
- 基本图形绘制(点、线、矩形、椭圆等)
- 文本输出
- 位图操作
- 坐标变换
在本次实验中,我们将重点使用CDC的几个关键方法:
cpp复制MoveTo() // 移动画笔位置
LineTo() // 画直线
Rectangle() // 画矩形
Ellipse() // 画椭圆/圆
SetPixel() // 画单个像素点
Polygon() // 画多边形
1.2 开发环境配置
虽然Visual Studio 2019/2022已经相当成熟,但考虑到教学环境的统一性,本实验仍使用Visual C++ 6.0作为开发环境。以下是详细的配置步骤:
-
安装Visual C++ 6.0:
- 确保安装时勾选"MFC类库"选项
- 建议安装在默认路径,避免路径中包含中文或空格
-
配置项目属性:
- 创建新项目时选择"MFC AppWizard(exe)"
- 在应用类型中选择"单文档界面(SDI)"
- 在高级功能中勾选"使用MFC作为共享DLL"(减少最终可执行文件大小)
-
调试设置:
cpp复制// 在stdafx.h中添加以下宏定义,开启更严格的编译检查 #define _CRT_SECURE_NO_WARNINGS #define _AFX_SECURE_NO_WARNINGS
注意:虽然VC6有些老旧,但其轻量级的特性非常适合教学演示。在实际项目中,建议使用更新版本的Visual Studio,它们对C++标准的支持更好。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 基本图形绘制实战
2.1 绘制点元素
点的绘制看似简单,但在图形学中有着重要意义。在MFC中,我们主要通过SetPixel()函数实现点的绘制。
基础点绘制:
cpp复制void CExp_01View::DrawPoints(CDC *pDC)
{
// 绘制单个红色像素点
pDC->SetPixel(100, 100, RGB(255,0,0));
// 绘制一组点形成实心方块
for(int i=0; i<10; ++i) {
for(int j=0; j<10; ++j) {
pDC->SetPixel(200+j, 150+i, RGB(255,0,0));
}
}
}
绘制行政中心标记:
cpp复制void CExp_01View::DrawAdministrativeCenter(CDC *pDC)
{
// 使用不同颜色的方块表示不同行政中心
COLORREF colors[] = {RGB(255,0,0), RGB(0,255,0), RGB(0,0,255)};
CPoint positions[] = {CPoint(200,150), CPoint(400,200), CPoint(600,250)};
for(int k=0; k<3; ++k) {
for(int i=0; i<15; ++i) {
for(int j=0; j<15; ++j) {
pDC->SetPixel(positions[k].x+j, positions[k].y+i, colors[k]);
