如何使用MFC实现图形学课程中中点圆算法
发表于:2025-11-11 作者:千家信息网编辑
千家信息网最后更新 2025年11月11日,这篇文章将为大家详细讲解有关如何使用MFC实现图形学课程中中点圆算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.进入资源视图,新建对话框,编辑修改Captio
千家信息网最后更新 2025年11月11日如何使用MFC实现图形学课程中中点圆算法
这篇文章将为大家详细讲解有关如何使用MFC实现图形学课程中中点圆算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
1.进入资源视图,新建对话框,编辑修改Caption或者ID属性
右击该对话框添加类 基类为 CDialog
命名为:MyCircleDialog
使用类向导,选择MyCircleDialog类,选 择成员变量 添加变量 value类型 int型
m_radius 设置 变量取值范围
m_circlex
m_circlex
2.添加菜单,设置ID 为 ID_MyCircleMenu 并通过类向导添加消息映射函数
选择类名 C***View
查找ID ID_MyCircleMenu,映射 ONCOMMAND 消息
C***View
3.添加变量并在构造函数中初始化
C***View.h
public: int m_vradius; int m_vcirclex; int m_vcircley;
C***View.cpp
m_vradius = 0; m_vcirclex = 0; m_vcircley = 0;
添加 MyCircleDialog 头文件
#include "MyCircleDialog.h"
4.在消息处理程序中添加与dialog交互 获取 输入数据的代码
// CMFCCircleDialogDemoView 消息处理程序void CMFCCircleDialogDemoView::OnMycirclemenu(){ // TODO: 在此添加命令处理程序代码 MyCircleDialog dlg; //定义一个对话框对象 if(dlg.DoModal() == IDOK) //显示对话框 { m_vradius = dlg.m_radius; m_vcirclex = dlg.m_circleX; m_vcircley = dlg.m_circleY; //接收并存储编辑框数据 Invalidate(); //刷新视图 }}// CMFCTestView 绘制
5.在OnDraw中 添加 绘图 代码(取消CDC*参数注释,使用所有设备环境基类CDC画图,
也可以定义使用 其他设备环境类如CClientDC等)
void CMFCCircleDialogDemoView::OnDraw(CDC* pDC){ CMFCCircleDialogDemoDoc* pDoc = GetDocument(); ASSERT_VALID(pDoc); if (!pDoc) return; // TODO: 在此处为本机数据添加绘制代码 /*确定圆心,画出直角坐标系*/ CRect rect; GetWindowRect(rect); int center_x = rect.Width()/2; int center_y = rect.Height()/2; CPen myPen; //创建画笔 myPen.CreateStockObject(BLACK_PEN); //设置画笔属性 pDC->SelectObject(&myPen); //绑定画笔句柄 pDC->MoveTo(center_x,0); pDC->LineTo(center_x, rect.Height()); pDC->MoveTo(0,center_y); pDC->LineTo(rect.Width(),center_y); /*********************绘制圆****************/ //逻辑圆心坐标 /* int m_vradius = 50; int m_vcirclex = -70; int m_vcircley = 100; */ //转化为画布中圆心坐标 center_x = center_x + m_vcirclex; center_y = center_y - m_vcircley; pDC->SetPixel(center_x,center_y+m_vradius,RGB(125,125,125));//绘制圆心的点 pDC->Ellipse(center_x-3,center_y-3,center_x+3,center_y+3); //画个小圆,确定圆心位置 int p=5/4-m_vradius; //键值的初始值 int x=0; int y=m_vradius; //使用中点圆算法画圆 while(xSetPixel(center_x+x,center_y+y,RGB(125,125,125)); pDC->SetPixel(center_x+y,center_y+x,RGB(125,125,125)); pDC->SetPixel(center_x+y,center_y-x,RGB(125,125,125)); pDC->SetPixel(center_x+x,center_y-y,RGB(125,125,125)); pDC->SetPixel(center_x-x,center_y-y,RGB(125,125,125)); pDC->SetPixel(center_x-y,center_y-x,RGB(125,125,125)); pDC->SetPixel(center_x-y,center_y+x,RGB(125,125,125)); pDC->SetPixel(center_x-x,center_y+y,RGB(125,125,125)); //以对称的方式完成圆的绘制 } else{ y--; p=p+2*x+3-2*y-2; pDC->SetPixel(center_x+x,center_y+y,RGB(125,125,125)); pDC->SetPixel(center_x+y,center_y+x,RGB(125,125,125)); pDC->SetPixel(center_x+y,center_y-x,RGB(125,125,125)); pDC->SetPixel(center_x+x,center_y-y,RGB(125,125,125)); pDC->SetPixel(center_x-x,center_y-y,RGB(125,125,125)); pDC->SetPixel(center_x-y,center_y-x,RGB(125,125,125)); pDC->SetPixel(center_x-y,center_y+x,RGB(125,125,125)); pDC->SetPixel(center_x-x,center_y+y,RGB(125,125,125)); //以对称的方式完成圆的绘制 } Sleep(20); }} 关于"如何使用MFC实现图形学课程中中点圆算法"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
圆心
代码
变量
对话框
消息
对话
中点
算法
坐标
数据
画笔
程序
篇文章
处理
图形
课程
对称
函数
向导
属性
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机网络技术专业知识记录
提示手机在使用代理服务器
软件开发公司做生意好做吗
电子书下载无线网络技术
河南网络安全现状
收到软件开发收入
从事危害网络安全活动罚款
数据库同时写入数据
网络安全需要懂什么意思
原神国际服务器是哪个
怎么放个Html到服务器里
永劫无间各个服务器互通吗
阿坝网络技术价格多少
网络安全咨询店
HIS服务器的管理
数据库应用设想
饥荒服务器叫什么名字
网络安全重在提高安全技术
大连网络技术培训学校
数据库根据id查询前一百条
有关网络安全的英文作文
武汉信息网络安全维护条件
ios做游戏的软件开发
幻塔捏脸数据库pcr
视频图像数据库
广东地区网络安全事件
cad材料数据库加载失败
顺德有哪些软件开发公司
网络安全辩论赛事件
圣鹊软件开发