如何使用MFC实现图形学课程中中点圆算法
发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,这篇文章将为大家详细讲解有关如何使用MFC实现图形学课程中中点圆算法,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。1.进入资源视图,新建对话框,编辑修改Captio
千家信息网最后更新 2026年11月02日如何使用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安全错误
数据库的锁怎样保障安全
重生之互联网科技帝国
科技互联网项目
互联网科技的
互联网 新科技
人人互联网科技是培训
互联网科技生活的内容
现代科技和互联网有关系吗
哈尔滨新华互联网科技学院
亳州好赞互联网科技有限公司
互联网新科技动漫ppt素材
互联网科技和法律行业
恒生互联网科技业指数调整周期
区块链结合互联网科技
互联网科技实习生岗位
从那以后互联网科技有限公司
35岁以上互联网科技行业
互联网科技包装股份有限公司上市
互联网科技手机排行榜
互联网科技手抄报图片
科技互联网企业在行动
上海卓越科技互联网
狮子座互联网科技有限公司
来此购互联网科技有限公司
全球顶尖互联网科技公司
赶超互联网科技 微信多开
互联网5g黑科技有哪些
成都互联网科技公司工作好不好
城市宝互联网科技有限公司
宇信科技在杭州互联网排第几
盐城市攀科互联网科技有限公司