单文档中画直线

本文档详细介绍了如何在MFC的单文档界面应用中实现直线的绘制,涵盖了绘制流程、坐标系统转换及用户交互等关键步骤,帮助开发者掌握MFC图形绘制的基本方法。
摘要由CSDN通过智能技术生成
之前需要将单文档分成两个框

1.给对话框添加四个编辑框和一个按钮。右键单击编辑框,添加变量,类别为value,类型double,变量名m_startlinex。
2.在类视图中,对话框类中右键在对话框头文件中添加函数OnDrawline,同时在对话框头文件中添加 double Line[2][2]
3.在对话框.cpp文件中加入#include "MainFrm.h"
#include "rView.h"
void CP1::OnDrawline(void)
{
UpdateData(true);
CMainFrame* pMainFrame = (CMainFrame*)GetParentFrame();
CrView* pView = (CrView*)(pMainFrame)->Splitter.GetPane(0,1);
Line[0][0]=m_startlinex;
Line[0][1]=m_startliney;
Line[1][0]=m_endlinex;
Line[1][1]=m_endliney;
pView->DrawShape(Line,1);
UpdateData(false);
}
其中Splitter为将单文档分为两部分时的对象
4.在rView.h(单文档名称)中添加 void DrawShape(double V[][2],int linenum);
5.在.cpp中添加
void CrView::DrawShape(double V[][2],int linenum)
{
//RedrawWindow();
CClientDC dc(this);
CPen pen,*ppen;
CRect rclient;
pen.CreatePen(PS_SOLID,1,RGB(255,0,0));
ppen = dc.SelectObject(&pen);
if(linenum==1)
{
dc.MoveTo(V[0][0],V[0][1]);
dc.LineTo(V[1][0],V[1][1]);
}
else
for(int i=0;i<linenum;i++)
{
if(i==linenum-1)
{
dc.MoveTo(V[i][0],V[i][1]);
dc.LineTo(V[0][0],V[0][1]);
}
else
{
dc.MoveTo(V[i][0],V[i][1]);
dc.LineTo(V[i+1][0],V[i+1][1]);
}
}

}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值