CClientDC dc(this);是在对话框中绘的图。先谢了,能举个例子吗?

cuiyuwuyou 2008-11-26 03:51:14
我用了一个对话框输入数据想在视图里输出图形应该怎么做如果用CClientDC dc(this);是在对话框中绘的图。先谢了,能举个例子吗?
...全文
114 点赞 收藏 4
写回复
4 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
cuiyuwuyou 2008-12-24
谢谢各位了
回复
hitler2008 2008-12-02

在对话框里输入数据,把数据传到View类里面,在View类里画图就行

如在对话框里输入画直线时需要的起点和终点坐标point1和point2,
赋值给View的变量m_point1,m_point2然后确定
在View类中假设
CTestDlg dlg;
if(IDOK==dlg.MoDoal())
{
//获取对话框数据
m_point1=dlg.point1;
m_point2=dlg.point2;
//画图
CClient dc(this);
dc.MoveTo(m_point1);
dc.LineTo(m_point2);
}
回复
云风 2008-12-02
[Quote=引用 2 楼 hitler2008 的回复:]

在对话框里输入数据,把数据传到View类里面,在View类里画图就行

如在对话框里输入画直线时需要的起点和终点坐标point1和point2,
赋值给View的变量m_point1,m_point2然后确定
在View类中假设
CTestDlg dlg;
if(IDOK==dlg.MoDoal())
{
//获取对话框数据
m_point1=dlg.point1;
m_point2=dlg.point2;
//画图
CClient dc(this);
dc.MoveTo(m_point1);
dc.LineTo(m_point2);
}
[/Quote]

同意二楼的做法
回复
MicrosoftShip 2008-12-02
你首先要搞清楚CPaintDC,CDC,CClientDC这几个类的区别,至于绘图,就是MSDN上CDC的成员函数,如果是在OnPrint,OnDraw,OnPaint这些重载函数中,VC会以参数的形式将构造好的设备环境传给你,否则的话,你需要实例化一个DC.


CClientDC dc(this);是说建立一个与windows客户区相关联的设备文本。

摘自 MSDN:

void CYourView::OnDraw(CDC* pDC)
{
// get the size and position of the client area of
// your window

CRect rect;
GetWindowRect(&rect);

// Move the current pen to the top left of the window. We call the
// TopLeft() member of CRect here and it returns a CPoint object we
// pass to the override of CDC::MoveTo() that accepts a CPoint.

pDC->MoveTo(rect.TopLeft());

// Draw a line from the top left to the center of the window.
// CenterPoint() gives us the middle point of the window as a
// CPoint, and since CDC::LineTo() has an override that accepts a
// CPoint, we can just pass it along.

pDC->LineTo(rect.CenterPoint());

// Now, draw a line to the top right of the window. There's no
// CRect member which returns a CPoint for the top right of the
// window, so we'll reference the CPoint members directly and call
// the CDC::LineTo() override which takes two integers.

pDC->LineTo(rect.right, rect.top);

// The top part of the "Y" is drawn. Now, we'll draw the stem. We
// start from the center point.

pDC->MoveTo(rect.CenterPoint());

// and then draw to the middle of the bottom edge of the window.
// We'll get the x-coordinate from the x member of the CPoint
// returned by CenterPoint(), and the y value comes directly from
// the rect.

pDC->LineTo(rect.CenterPoint().x, rect.bottom);
}
回复
相关推荐
发帖
VC/MFC
创建于2007-09-28

1.5w+

社区成员

VC/MFC相关问题讨论
申请成为版主
帖子事件
创建了帖子
2008-11-26 03:51
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……