C# CF, WinForms et double tampon


1

J'ai une application CF 2.0 avec un PictureBox sur un formulaire. Je veux déplacer le PictureBox avec le déplacement de souris et j'ai besoin d'ajouter le double tampon au formulaire pour éviter le scintillement.

Comment est-ce que je peux faire ceci?

Merci!

5

Vous n'avez pas besoin de la forme à double tampon, vous avez besoin que le PB soit. Ce n'est pas si facile de venir à CF. Cependant, vous pouvez créer votre propre contrôle, PB est assez simple. Par exemple:

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); 
    } 
} 

Si tout va bien, je ne pas utiliser des choses qui ne sont pas disponibles dans CF ...

  0

PB? Quelle est la signification de PB? 22 févr.. 092009-02-22 17:21:12

  0

PB == PictureBox. 22 févr.. 092009-02-22 17:29:53

  0

Cela ne fonctionne pas. J'ai besoin de double buffer sur Form parce que je déplace l'ensemble PictureBox (je pense). 22 févr.. 092009-02-22 17:59:35

  0

C'est le code correct, mais ce que vous devez faire est de créer un conteneur (un panneau par exemple) qui dessine comme ceci. Dans le pire des cas, vous devrez remplacer une zone d'image par quelque chose de personnalisé que vous dessinez et contrôlez manuellement à l'intérieur du panneau. 23 févr.. 092009-02-23 15:33:13

  0

Fonctionne également comme un charme lorsque vous dessinez des objets complexes qui prennent du temps. Je préallouer le bitmap, le redimensionner si nécessaire (sur Form.ResizeEnd), dessiner le truc (splines avec 1000s de points) dans le bitmap et dessiner le bitmap dans le PB. 31 août. 152015-08-31 16:14:47