Hi!
I have a CF 2.0 app with a PictureBox on a Form. I want to move the PictureBox with mouse move and I need to add Double Buffer to the form to avoid flickering.
How can I do this?
Thanks!
From stackoverflow
-
You don't need the Form double-buffered, you need the PB to be. That's not so easy to come by in CF. However, you could create your own control, PB is pretty simple. For example:
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); } }
Hopefully, I didn't use stuff that isn't available in CF...
VansFannel : PB? What is the meaning of PB?Hans Passant : PB == PictureBox.VansFannel : It doesn't work. I need double buffer on Form because I moving the entire PictureBox (I think).Quibblesome : This is the correct code, but what you'll need to do is create a container (a panel for example) that draws like this. Worst case scenario is that you'll have to swap out a picture box for something custom you manually draw and control inside the panel.
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.