当前位置:  开发笔记 > 编程语言 > 正文

c#CF,WinForms和双缓冲区

如何解决《c#CF,WinForms和双缓冲区》经验,为你挑选了1个好方法。

我在表单上有一个带有PictureBox的CF 2.0应用程序.我想用鼠标移动移动PictureBox,我需要在表单中添加Double Buffer以避免闪烁.

我怎样才能做到这一点?

谢谢!



1> Hans Passant..:

你不需要双缓冲表,你需要PB.这在CF中并不容易.但是,您可以创建自己的控件,PB非常简单.例如:

using System;
using System.Drawing;
using System.Windows.Forms;

public class MyPictureBox : Control {
  private Image mImage;
  public Image Image {
    get { return mImage; }
    set { mImage = value; Invalidate(); }
  }
  protected override void OnPaintBackground(PaintEventArgs pevent) {
    // Do nothing
  }
  protected override void OnPaint(PaintEventArgs e) {
    using (Bitmap bmp = new Bitmap(this.ClientSize.Width, this.ClientSize.Height)) {
      using (Graphics bgr = Graphics.FromImage(bmp)) {
        bgr.Clear(this.BackColor);
        if (mImage != null) bgr.DrawImage(mImage, 0, 0);
      }
      e.Graphics.DrawImage(bmp, 0, 0);
    }
    base.OnPaint(e);
  }
}

希望我没有使用CF中没有的东西......

推荐阅读
殉情放开那只小兔子
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有