Auto-Redraw in C# ??



  • hallo und eine frohe weihnacht nachträglich, sowie einen guten rutsch vorträglich,

    ich suche gerade eine Möglichkeit die alte VB6-Eigenschaft AutoRedraw in einer Picturebox in C# zu implementieren.
    Laut MSDN wird das Paint-Ereignis aufgerufen und bei Google hab ich auch nur Beispiele gefunden, die mit dem Paint-Ereignis alles zeichnen.
    Bei mir funktioniert dies allerdings nicht so, wie ich es mir vorstelle. Wenn ich mein Formular nach außerhalb des Bildschirm geschoben habe und zurück ziehe wird auch das paint-ereignis ausgeführt und somit neu gezeichnet, aber wenn ein anderes Forumluar meine PictureBox überlappt und dann auf mein Forumular mit der PicBox zurück kehre wird das paint-ereignis nicht ausgeführt.
    Habe ich da irgendetwas vergessen, wie zB ein Flag oä?
    Es muss ja irgendeine einfache Möglichkeit existieren eine so wichtige Funktion zu implementieren, oder?

    heimschmiede



  • AutoRedraw gibt es nicht mehr. Das mit dem Paint-Ereignis sollte aber eigentlich immer funktionieren. Stelle doch mal sicher, ob du beim richtigen Control auf das Ereignis horchst.



  • ich hab mal ein neues test-projekt gestartet und da habe ich das gleiche problem. ich stell einfach mal ein bischen code rein:

    //Form1.Designer.cs:
    this.pic.Paint += new System.Windows.Forms.PaintEventHandler(this.pictureBox1_Paint);
    
    //Form1.cs:
    private void pic_Paint(object sender, PaintEventArgs e)
    {
    	Graphics g = pic.CreateGraphics();
    	SolidBrush b = new SolidBrush(Color.Red);
    	g.FillRectangle(b, 0, 0, 20, 20);
    	g.Dispose();
    	b.Dispose();
    }
    

    heimschmiede



  • Sofern die PictureBox selbst keine Bitmap anzeigen soll, sondern nur zum Selberzeichnen verwendet wird, ist vllt. die PictureBox nicht geeignet? (vllt. cached die teilweise das Image, das sie anzeigen soll oder so?)



  • mhm, also cih verwende die pic-box rein zum selber zeichnen. was nehmt ihr denn für solche fälle? ich mein, diese dinger braucht man ja verdammt häufig...
    ich hab evtl gedacht es wär das framework, aber mit nem neuen ist es das gleiche.
    also immer her mit eureren ideen !

    heimschmiede



  • Hmm, je nachdem was du genau vor hast, evtl. nen UserControl ?
    vllt. reicht auch schon nen Panel ? vllt. bringt das auch alles nix - Wie gesagt, mein voriger Post ist nur ne Vermutung 😉



  • Versuch mal auf blöd, von der PictureBox abzuleiten, OnPaint zu redefinieren (am Ende base.OnPaint aufrufen) und dort drin das Zeichnen zu machen. Amsonsten find ich es komisch, dass es nicht geht. Ich habe auch schon eigene Controls geschrieben und normal geht das schon ganz geil mit dem Paint-Ereignis.


Anmelden zum Antworten