刚刚学习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);
*/
谢谢大神们来解答! 展开
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);
*/
谢谢大神们来解答! 展开
3个回答
展开全部
朋友,我现在也在看他的教程。。
那个m_p1是在鼠标左键按下的时候捕获的,因为你要画线,所以需要一个起点和终点,
按下的时候是起点,放开的时候是终点,这样才能构成一条线。
CPen *p1=dc.SelectObject(&pen);
pen是CPen的一个对象,他的作用是可以让你修改画笔的颜色等等、
你用的RGB宏,实际上就是在设定画笔的颜色。
返回一个旧的画笔。
dc.SelectObject(p1);
是把旧的画笔选择回来。。
就是说画完一条线后又把画笔选择回上一次的画笔。
如果不选择,那么作画下去的一直是选择到设备的那个画笔
那个m_p1是在鼠标左键按下的时候捕获的,因为你要画线,所以需要一个起点和终点,
按下的时候是起点,放开的时候是终点,这样才能构成一条线。
CPen *p1=dc.SelectObject(&pen);
pen是CPen的一个对象,他的作用是可以让你修改画笔的颜色等等、
你用的RGB宏,实际上就是在设定画笔的颜色。
返回一个旧的画笔。
dc.SelectObject(p1);
是把旧的画笔选择回来。。
就是说画完一条线后又把画笔选择回上一次的画笔。
如果不选择,那么作画下去的一直是选择到设备的那个画笔
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
画线当然是鼠标按下去的时候是起点,抬起时是终点,仅限初级的画直线,如果画随你手移动的曲线,则要调用OnMouseMove,稍微复杂一点。
dc.SelectObject(p1)这句形象理解就是你有很多种工具,但是你默认比如用铅笔,当你要用橡皮时就Select橡皮,而手中的笔被暂时放在P1中,用完橡皮在Select刚才的笔(P1),好进行接下来的其它任务.如果没这一步,虽然擦除的任务你也完成了,但是当再想写字时就完成不了了,因为你此时手中握着的是橡皮。
dc.SelectObject(p1)这句形象理解就是你有很多种工具,但是你默认比如用铅笔,当你要用橡皮时就Select橡皮,而手中的笔被暂时放在P1中,用完橡皮在Select刚才的笔(P1),好进行接下来的其它任务.如果没这一步,虽然擦除的任务你也完成了,但是当再想写字时就完成不了了,因为你此时手中握着的是橡皮。
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 鼠标抬起的点当然是画线的终点了
2. 那个是要把DC变回原来的,是可以运行,但是运行结果肯定变了
3. 不变回去的话如果之后你还用DC话的话就一直那么画下去了
2. 那个是要把DC变回原来的,是可以运行,但是运行结果肯定变了
3. 不变回去的话如果之后你还用DC话的话就一直那么画下去了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询