[英]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.