代码之家  ›  专栏  ›  技术社区  ›  pmcilreavy

GDI+屏幕外缓冲滚动

  •  2
  • pmcilreavy  · 技术社区  · 17 年前

    我正在使用C#GDI+创建一个自定义控件。

    谢谢

    3 回复  |  直到 17 年前
        1
  •  1
  •   dommer    17 年前

    这种方法的有效性取决于用户的移动量。如果用户正在进行小动作,然后停止考虑新信息,这可能起作用。但是,如果用户来回呼啸,您仍然会遇到问题。

    你的应用有助于逐渐提高图像的质量——即提供一个快速可用的图像,然后在用户停止考虑时改进它?

        2
  •  1
  •   Steve Mc    17 年前

    几年前我也有类似的问题。正如dommer提到的,如果在显示图像之前处理图像块,最好先显示一些内容,然后再进行改进。如果对原始图像进行Blit时遇到问题,则说明您的方法有问题。GDI+非常注重像素深度(您需要32bpp的alpha)。

    它工作得相当好,反应非常迅速。将原始位图快速点显到屏幕上非常快,在我们的例子中,处理通常非常落后。瓷砖变轻的效果实际上相当不错。

        3
  •  1
  •   serhio    16 年前

    仅绘制可见区域。 建立一种方法

    Bitmap DrawGraph(leftMargin, rightMargin) {...}
    

    OnPaint()

    Bitmap bmp = new Bitmap(e.ClipRectangle.Width, e.ClipRectangle.Height);
    bmp = DrawGraph(e.ClipRectangle.Left, e.ClipRectangle.Right);
    
    e.Graphics.DrawImageUnscaled(bmp, e.ClipRectangle.Location);
    
    推荐文章