Komponente TStretchImage testen



  • Das mit Genauigkeit ist immer so eine Sache. Ich denke, wenn Du mit int arbeitest, wird es genau genug sein. Insbesondere bei der recht einfachen Berechnung.

    Zu dem Flackern gibts in der FAQ was über DoubleBuffering.

    Das mit dem Neuzeichnen weiß ich nicht richtig. Hast Du die Paint Methode überschrieben? Falls nicht, wird ja Paint der Elternklasse verwendet und dann kommst Du mit Deiner Zeichnerei nicht zum Zuge. Das Abfangen von WM_PAINT müßte in diesen Fällen dann nicht notwendig sein.



  • lässt sich nicht kompilieren! unit <userpicture.h> fehlt!

    warum ist die komponente von TGraphicControl abgeleitet, wenn ehh nur ein Image dargestellt wird?

    • für neuzeichnen reicht ein aufruf von Invalidate bzw. InvalidateRect völlig aus.
    • wenn du mit gleitkomma-werten rechnest, solltest du alle elemente der gleichung ebenfalls als gleitkomma-wert betrachten
    • in Set-Funktionen am besten im prüfen, ob der wert sich geändert hat, sonst kommt es zu unnötigen aufrufen.


  • Original erstellt von Sunday:
    lässt sich nicht kompilieren! unit <userpicture.h> fehlt!

    Hi,
    hab ich auch schon bemerkt! Neue Versionen sind oben!

    Original erstellt von Sunday:
    warum ist die komponente von TGraphicControl abgeleitet, wenn ehh nur ein Image dargestellt wird?

    erst wollte ich die Kompo von TImage ableiten! Hat aber zu viel Probs gemacht! StretchDraw verursacht beim TImage einen Hintergrung!

    Original erstellt von Sunday:
    **

    • für neuzeichnen reicht ein aufruf von Invalidate bzw. InvalidateRect völlig aus.
    • wenn du mit gleitkomma-werten rechnest, solltest du alle elemente der gleichung ebenfalls als gleitkomma-wert betrachten
    • in Set-Funktionen am besten im prüfen, ob der wert sich geändert hat, sonst kommt es zu unnötigen aufrufen.

    **

    Gut werde es mal mit Inavalidate versuchen!

    Danke

    Alexander Sulfrian



  • HI,
    wie meintest du das mit Invalidate bzw. InvalidateRect? Ich bekomme das einfach nicht hin? Soll ich einfach das Repaint damit ersetzen, oder wie?

    Danke

    Alexander Sulfrian



  • Interessante Kompo!

    Deine Methode

    void __fastcall TStretchImage::PictureChange(TObject *Sender)

    wird 3 / 6 x pro Groessenaenderung gerufen! ???
    Daher das Flackern!

    Sonst funzt das gut!

    PS:
    Kannst mal im Forum suchen nach: ImageScroller.
    Hab' da mal ne Klasse gepostet fuer zoombare Anzeige in Scrollbox! (fuer Gormez / Omega-X)



  • hallo,

    wenn du die "kinderkrankheiten" in den griff bekommst wirklich ne sinnvolle sache die dann auch eingesetzt wird!

    mfg
    murph



  • Original erstellt von DerAltenburger:
    *Deine Methode
    void __fastcall TStretchImage::PictureChange(TObject Sender)
    wird 3 / 6 x pro Groessenaenderung gerufen! ???
    Daher das Flackern!

    Hi,
    ne Idee wie ich das verändern bzw. beheben könnte?

    Original erstellt von DerAltenburger:
    PS:
    Kannst mal im Forum suchen nach: ImageScroller.
    Hab' da mal ne Klasse gepostet fuer zoombare Anzeige in Scrollbox! (fuer Gormez / Omega-X)

    Ich kenn die Klasse schon! Hab Thread mitverfolgt!

    Danke

    Alexander Sulfrian



  • statt:

    void __fastcall TStretchImage::SetCenter(bool value)
    {
     // zentrieren setzen
     FCenter = value;
    
     // Bild neuzeichen
     PictureChange(this);
    }
    

    lieber:

    void __fastcall TStretchImage::SetCenter(bool value)
    {
      if (FCenter != value)
      {
        // zentrieren setzen
        FCenter = value;
        Invalidate();
      }
    }
    

    durch Invalidate() wird das steuerelement neu gezeichnet, sprich die Paint()-Methode aufgerufen. ferner solltest du nicht das eigens erzeugte ereignis OnChange in der eigenen komponente benutzen, dann hast du auch keine probleme mit rekursiven aufrufen, die du so abfangen musst!



  • Original erstellt von Alexander Sulfrian:
    **
    Original erstellt von DerAltenburger:
    Deine Methode
    void __fastcall TStretchImage::PictureChange(TObject *Sender)
    wird 3 / 6 x pro Groessenaenderung gerufen! ???
    Daher das Flackern!

    Hi,
    ne Idee wie ich das verändern bzw. beheben könnte?

    **

    Jo, noch interessiert?



  • Original erstellt von DerAltenburger:
    Jo, noch interessiert?

    Hi,
    nein!
    War im Urlaub und konnte leider erst heute den Vorschlag von Sunday ausprobieren!

    Das Ergebnis ist überraschend!

    Neue Version der Komponente ist oben!

    Hoffe sie gefällt auch!

    MFG

    Alexander Sulfrian

    PS: Kein Flimmern, kein Verschwinden! Nur ein bisschen langsam!


Anmelden zum Antworten