簡體   English   中英

C#CF,WinForms和雙緩沖區

[英]c# CF, WinForms and double buffer

我有一個CF 2.0應用程序,在窗體上有一個PictureBox。 我想通過鼠標移動來移動PictureBox,並且需要向窗體中添加Double Buffer以避免閃爍。

我怎樣才能做到這一點?

謝謝!

您不需要Form雙緩沖,您需要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中沒有的東西...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM