首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

怎么移动MFC绘制的图形

2013-09-11 
如何移动MFC绘制的图形void CHuitu2View::OnPaint() {CPaintDC dc(this) // device context for painting

如何移动MFC绘制的图形
void CHuitu2View::OnPaint() 
{
CPaintDC dc(this); // device context for painting

// TODO: Add your message handler code here
CPen pen;         //定义画笔
    CBrush   brush;   //定义画刷
pen.CreatePen(PS_SOLID,w, m_nColor);  //创建画笔
brush.CreateSolidBrush(m_fColor);     //创建画刷
dc.SelectObject(&pen);      //获取画笔
    dc.SelectObject(&brush);    //获取画刷

    if(shape==1)
{
dc.MoveTo(opoint.x,opoint.y);
dc.LineTo(cpoint.x,cpoint.y);
}                                  //绘制直线,从opoint到cpoint连线
if(shape==2)
{
dc.Rectangle(opoint.x,opoint.y,cpoint.x,cpoint.y); //绘制矩形
}
if(shape==3)
{
dc.Ellipse(opoint.x,opoint.y,cpoint.x,cpoint.y);//绘制椭圆
}
以上代码可以实现绘制直线、矩形、椭圆,请问怎么在此基础上移动所画出的图形? mfc 移动 图形 连线
[解决办法]
opoint这个数据如果可以修改,就修改它就好了
如果他是不可修改的,可以适当修改一下你的代码:


CPoint offset = end-start; // 
CPoint pos = opoint - offset;

if(shape==1)
{
dc.MoveTo(pos .x,pos .y);
dc.LineTo(pos .x,pos .y);

...


添加几个成员:

CPoint start;
CPoint end;
bool lbtnDown;

在OnLButtonDown 初始化他们:

start = pt;
end = pt;
lbtnDown = true;

在OnMouseMove 更新:



if( lbtnDown )
{
    end = pt;
    Invalidate();
    UpdateWindow();
}


差不多就是这样,当然肯定不完善,剩下的工作就是你的了 :)

热点排行