【问题标题】:how drag a shape in picture box?如何在图片框中拖动形状?
【发布时间】:2009-11-07 22:51:17
【问题描述】:

我有一个项目,在这些项目中我从某个图层绘制了一些形状。例如,我在圆形图层中有两个圆圈,在矩形图层中有三个矩形,依此类推。我通过调用 Layer.Draw 绘制结果,并使用 Graphics 对象对图层结果进行标记。 我可以在图片框中选择一个形状并在图层上指定它。我可以通过重绘图层来拖动它并用图形重新标记所有内容。它可以工作!但是太慢了!!

我该如何优化呢?

【问题讨论】:

    标签: c# gdi+ system.drawing


    【解决方案1】:

    在旧解决方案中,我将形状绘制到 layer.image 中,并在 Paint 事件中将它们与 e.Graphic 结合起来。 我通过将图形对象传递到图层并用它绘制形状来解决这个问题。我的程序运行得很好!

    【讨论】:

      【解决方案2】:

      曾几何时,我有一个项目需要绘制图像时的速度。我使用解锁方法直接访问这些位(http://msdn.microsoft.com/en-us/library/system.drawing.bitmap.unlockbits.aspx)。但是这种方法很不安全,也很复杂,所以你应该尽可能避免这种情况。

      尝试优化您的程序并删除不必要的抽奖。对 GUI 的主要绘制非常慢,因此尽量不要永久更新图片框,而仅在必要时更新。

      【讨论】:

      • 我在一些书籍中看到,为了向用户显示图像,专家使用自定义控件。并将图像绘制到其中,当需要重新绘制图像时使用 control.Invalidate() 来执行此操作。你有什么想法?如果我使用这种方法,我可以解决问题吗?我现在正在测试它!
      • 这不是我的方式,但你可以试试。尝试将控件的 DoubleBuffered 属性设置为 true,这将提高性能。
      猜你喜欢
      • 1970-01-01
      • 2020-07-09
      • 2016-09-15
      • 2016-12-09
      • 2014-08-19
      • 1970-01-01
      • 1970-01-01
      • 2012-08-21
      • 2011-01-17
      相关资源
      最近更新 更多