VC++6.0实现直线扫描转换
一、添加菜单栏
使用VC++6.0新建一个空白文档后,双击【Menu】下的【ID_MAINFRAME】,添加一个子菜单,如下
添加ID和标题,ID务必保证是唯一的
注意:【画图】和【Brehensam画圆】这两个菜单是博主之前添加的,大家可以忽略,直接添加自己定义的菜单即可。
二、添加对话框
找到【Dialog】,右键选择【Insert Dialog】,如下
拖入五个文本框和四个编辑框,布局自定义即可,右键文本框控件选择【Properties】,输入标题即可,效果如下
文本框修改好之后,轮到编辑框,同样右击编辑框,选择【Properties】,填入对应的ID,最好与输入相对应,如下
以上操作完成后,在对话框任意空白位置双击,会弹出对话框,选择【OK】
为对话框起个名字,尽量不要以大写C开头,输入完成后选择【OK】
出现如下界面,选择【OK】
选中对话框【中点画线】,点击【ClassWizard】,为其添加成员变量,如下
选择对应的类名以及子菜单的ID,点击【OK】
再次打开【ClassWizerd】,添加变量
以此类推,添加完成后如下,点击【OK】
三、建立消息映射
无需选中任何选项,点击【View】,选择【ClassWizard】
注意Class name和Object ID以及Message的选择, Object ID要选择子菜单的ID
点击【Add Function】,直接点击【OK】即可,使用默认的函数名
再次点击【OK】即可
四、编写函数
双击打开【testView.cpp】,添加头文件
测试,编写代码,测试菜单与对话框是否建立了联系
点击感叹号运行,点击子菜单弹出对话框则说明正常建立了联系,如下
打开【testView.h】,建立全局变量
打开【testView.cpp】,给全局变量赋值
编写算法函数,将下列代码粘贴到上述函数的下方
void CTestView::MidLine(){
CClientDC dc(this); //添加上下文,确定画布
COLORREF rgb=RGB(0,0,225); //添加画笔颜色
int a,b,delta1,delta2,d,x,y;
a=y1-y2;
b=x2-x1;
d=2*a+b;
delta1=2*a;
delta2=2*(a+b);
x=x1;
y=y1;
dc.SetPixel(x,y,rgb);
while(x<x2)
{
if(d<0)
{
x++;
y++;
d+=delta2;
}
else
{
x++;
d+=delta1;
}
dc.SetPixel(x,y,rgb);
}
}
打开【testView.h】,对函数MidLine进行声明
运行程序,输入坐标
效果如下
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击