刚刚学习MFC划线,孙鑫的教程!

先前定义了m_p1,且初始化m_p1=0;随后voidCPro_6View::OnLButtonDown(UINTnFlags,CPointpoint){//TODO:A... 先前定义了m_p1,且初始化m_p1=0;随后
void CPro_6View::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: Add your message handler code here and/or call default
m_p1=point;

CView::OnLButtonDown(nFlags, point);
}
void CPro_6View::OnLButtonUp(UINT nFlags, CPoint point)
{
CPen pen(PS_SOLID,1,RGB(0,255,0));
CClientDC dc(this);
CPen *p1=dc.SelectObject(&pen);
dc.MoveTo(m_p1);()
dc.LineTo(point);(这个怎么就是终点呢,如何理解这两个点 )
dc.SelectObject(p1);(没有这句话也可以运行 为哈视频教程上有呢?)
CView::OnLButtonUp(nFlags, point);
/*
CPen pen(PS_SOLID,1,RGB(0,255,0));
CClientDC dc(this);
dc.SelectObject(&pen);(这样也能达到划线目的和上边的又有什么区别呢?)
dc.MoveTo(m_p1);
dc.LineTo(point);

CView::OnLButtonUp(nFlags, point);
*/

谢谢大神们来解答!
展开
 我来答
百度网友2976c9b
2013-03-03 · TA获得超过1555个赞
知道小有建树答主
回答量:934
采纳率:0%
帮助的人:712万
展开全部
朋友,我现在也在看他的教程。。
那个m_p1是在鼠标左键按下的时候捕获的,因为你要画线,所以需要一个起点和终点,
按下的时候是起点,放开的时候是终点,这样才能构成一条线。

CPen *p1=dc.SelectObject(&pen);

pen是CPen的一个对象,他的作用是可以让你修改画笔的颜色等等、
你用的RGB宏,实际上就是在设定画笔的颜色。
返回一个旧的画笔。

dc.SelectObject(p1);

是把旧的画笔选择回来。。
就是说画完一条线后又把画笔选择回上一次的画笔。
如果不选择,那么作画下去的一直是选择到设备的那个画笔
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jimy1
2013-03-05 · TA获得超过814个赞
知道小有建树答主
回答量:426
采纳率:100%
帮助的人:233万
展开全部
画线当然是鼠标按下去的时候是起点,抬起时是终点,仅限初级的画直线,如果画随你手移动的曲线,则要调用OnMouseMove,稍微复杂一点。
dc.SelectObject(p1)这句形象理解就是你有很多种工具,但是你默认比如用铅笔,当你要用橡皮时就Select橡皮,而手中的笔被暂时放在P1中,用完橡皮在Select刚才的笔(P1),好进行接下来的其它任务.如果没这一步,虽然擦除的任务你也完成了,但是当再想写字时就完成不了了,因为你此时手中握着的是橡皮。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jellycgl
2013-03-02 · TA获得超过417个赞
知道小有建树答主
回答量:1149
采纳率:66%
帮助的人:890万
展开全部
1. 鼠标抬起的点当然是画线的终点了
2. 那个是要把DC变回原来的,是可以运行,但是运行结果肯定变了
3. 不变回去的话如果之后你还用DC话的话就一直那么画下去了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式