现在我先实现这样一个功能:程序在绘制图片的同时进行图像的平移,平移的时候绘图不中断。
我之前一直是在pictureBox里面加上一张空白位图,然后在位图上画。期望能达到效果,但不行。因为之前测试认为花在位图上的图像是可以得到保留的,不会被refresh掉。但平移的时候老出问题。不知道大家有什么其他好的办法?谢谢!

解决方案 »

  1.   

    新建一个Bitmap对象,在该Bitmap对象上画图,
    然后将该位图对象使用DrawImage方法显示在PictureBox上。此时决定绘制的原点坐标即可实现平移//在内存中画好需要的图形
    Bitmap buffer = new Bitmap();
    Graphics gBuffer = Graphics.FromImage(buffer);
    gBuffer.Clear(Color.Black);
    gBuffer.DrawRectangle(new Pen(Color.Yellow,2),new Rectangle(100,100,200,200));
    gBuffer.Dispose();//显示在PictureBox,PictureBox的名字叫picShow
    Graphics gShow = picShow.CreateGraphics();
    //x,y为你需要显示图形的位置坐标
    gShow.DrawImage(buffer,x,y);
      

  2.   

    timer定时获取相关坐标,实现画图
      

  3.   

    我估计也要写这部份代码的,提供一个思路给你:
    先将全图画在Buffer对象中,
    然后使用Graphics的DrawImage方法
    DrawImage(Image, RectangleF, RectangleF, GraphicsUnit)
    在指定位置并且按指定大小绘制指定的 Image 的指定部分。你只要计算需要显示的范围,就可以实现了
      

  4.   

    根据楼主的描述,估计图片比较大,绘制需要较长时间。
    我的思路是图片依然是绘制在PictureBox上,移动图片不需要重新计算图片位置并绘制图片。
    只需要PictureBox做移动操作。当然PictureBox是放在Panel容器控件里。
      

  5.   

    这个要看你的代码是如何写的了,大概平移的代码应该是:
    1.计算平移后需要显示的范围,将该范围存储为类的变量
    2.picturebox.Refresh()在PictureBox的Paint事件中写重画代码
    这样肯定没有问题的。
      

  6.   

    C# 实现CAD图纸 拖动平移代码 有人知道吗,把代码贴一下