首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何移动GraphicsPath onMouseMove

如何移动GraphicsPath onMouseMove
EN

Stack Overflow用户
提问于 2015-08-04 02:35:27
回答 1查看 883关注 0票数 0

我正在使用GraphicsPath绘制Lines,所以它就像Paint中的Pen/Brush工具

代码语言:javascript
复制
   public void OnMouseDown(object sender, MouseEventArgs e)
    {
        start = e.Location;
        path.AddLine(e.Location, new Point(e.Location.X, e.Location.Y));
    }

    public void OnMouseMove(object sender, MouseEventArgs e)
    {
        end = e.Location;
        path.AddLine(e.Location, new Point(e.Location.X, e.Location.Y));
    }

    public void OnMouseUp(object sender, MouseEventArgs e)
    {
        end = e.Location;
        path.AddLine(e.Location, new Point(e.Location.X, e.Location.Y));
    }

    public void OnPaint(object sender, Graphics g)
    {
        g.DrawPath(pen, path);
    }

我如何Relocate它,我已经尝试过Transform方法,但它没有工作。

代码语言:javascript
复制
 public void Relocate(MouseEventArgs e)
    {
        Matrix m = new Matrix();
        m.Translate(start.X + e.X - end.X, start.Y + e.Y - end.Y, MatrixOrder.Append);
        path.Transform(m);

    }

那我怎么做才是对的呢?移动整个绘制的形状?

EN

回答 1

Stack Overflow用户

发布于 2015-08-04 02:53:04

你试过:

  • 创建直线和移动线的分离逻辑?我认为在您的实现中需要它来区分您正在执行的操作。
  • 当移动这条线时,path可以通过Relocate()方法进行转换,以下内容就足够了: 矩阵=新矩阵( );matrix.Translate( offsetX,offsetY );//其中偏移量是新位置path.Transform(矩阵);//变换路径

那么,不要忘记通过path重新绘制Invalidate()

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31799782

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档