Double Buffering mit PictureBox

JJB

Cogito ergo brumm
Tach !

Bin mir sicher, das Thema wurde oft genug aufgewärmt, aber ich bräuchte hier ein paar konkrete saubere Codebeispiele.

Ich habe ein Bild welches innerhalb einer Form ständig verschoben wird.
Dass es dabei flimmert, obwohl es hauptsächlich schwarz ist ebenso wie der Hintergrund, ist denke ich, nicht weiter ungewöhnlich. Jetzt möchte ich eine möglichst sanfte Bewegung. Der Timer der das Bild verschiebt sollte nicht jede Milisekunde neu aufbauen (Frequ. < 60Hz) und das Bild sollte beim Aufbau weder ruckeln, noch soll man sehen, dass es gerade bewegt wurde.

Also hab ich von PictureBox geerbt und double Buffering aktiviert
Code:
   /// <summary>
   /// Zusammenfassung für KWPicture
   /// </summary>
   public class KWPicture : System.Windows.Forms.PictureBox
   {
      /// <summary>
      /// Konstruktor
      /// </summary>
      #region KWPicture
      public KWPicture()
      {
         // Set the value of the double-buffering style bits to true.
         this.SetStyle(ControlStyles.DoubleBuffer | ControlStyles.UserPaint | ControlStyles.AllPaintingInWmPaint, true);
      }
      #endregion
   }

Doch jetzt sieht man bei geringer Frequenz, wie das Bild beim Verschieben um 1 px neu aufgebaut wird (sieht aus als saust es ins Bild) und bei hoher Frequenz flimmert es.
Ohne Double Buffering ist das auch nicht anders.

Also was mache ich falsch ?
Ist der Einsatz von Double Buffering an dieser Stelle völlig falsch ?
Sollte ich bmps statt jpgs benutzen ?
Sollte ich statt mit dem Bitmap einer geerbten PictureBox zu arbeiten, lieber das Bitmap selbst erben ?

Jemand eine Idee ?

Danke fürs Lesen !
JJB
 
Zurück