In gezoomtes TImage pasten



  • Moin!

    Stimmt, ein Viewer hat nicht den Reiz. IrfanView ist nicht so leicht zu toppen. Ich könnte dem sowieso nie das Wasser reichen, schon allein wegen der vielen Formate nicht. Dann der Renderalgor im Fullscreen. Usw. Also nutz ich ihn und freu mich, daß es User gibt, die solch edle Teilchen sogar frei verbreiten. 🕶

    Trotzdem ist der ImageScroller sehr interessant. Ich kann viel lernen und einiges übernehmen - wenn auch abgewandelt und speziell ausgebaut.

    Du wunderst dich doch nicht wirklich, daß ich den Klassenbau noch zurückstell? "Klasse" war ohnehin in Anführungszeichen. Das meint, ich mach ganz einfach Zwischenbackups, nur zur Sicherheit. Davon will ich noch lange nichts vererben. Ich weiß noch nicht, wie ich einiges, was ich noch vorhab, im Endeffekt lösen werde. In dem Stadium wär es ganz einfach Blödsinn, schon an Klassen zu denken. Bin ständig am Code optimieren usw. Also von solidem Konzept noch keine Spur. Das ist ein Wachstumsprojekt.

    Trotzdem beginn ich, an Wiederverwertbarkeit zu denken. Bei richtigem Vorgehen geht sicher einiges, was ich bislang für unrealistisch gehalten hatte. Nimm den Zoomfaktor. Der wird eigentlich immer gbraucht. Wenn der Default 1 ist, wird die Kompo universell, ohne irgendwo einzugrenzen. n/1 oder gar nichts tun, im Ergebnis kein Unterschied. float als Datentyp, damit genug Freiraum besteht.

    Interessant ist auch ein durchdachtes Autoscrolling. Im Malprogramm soll OnMouseDown gewesen und Dragging oder Drawing true sein. Beim Viewer kann (im FullScreen an den Rand) Zeigen interessant sein. Das ganze auch via Methode deaktivierbar.

    Irgendwie dachte ich, ein verschiebbares Image sollte fensterorientiert sein ala Panel. Der Lauf wäre stabil, aber das Bildflickern bekommt man doch nicht weg. Man sieht ja, wie sich der Panel->Caption im gezoomten Bild verhält. Außerdem verschenkt man den Transparenzeffekt. Aber ein gutes Doublebuffering gehört in eine bewegliche Bidkompo rein. Als bool wär es gut, denn statisch angezeigte Bilder brauchen es nicht. Neuere Versionen richten es ohnehin über die App ein. Schade, daß man da wohl nicht drankommt...

    Die Paintbox kingt interessant.
    -Scrollrad zum Zoomen... 🕶 Hab die Möglichkeit im BCB3 noch gar nicht entdeckt. das Rad würde ich gern einbeziehen.
    -Ausstanzen und Anzeige in 2 Editboxen? Genaues Ausstanzen/Kopieren hatte ich schon in der Uranwendung, die ich beim Reinlernen immer weiter ausgebaut hatte. Läuft aber so nicht mehr unter WIN98. Muß die Probs mühsam Stück für Stück knacken - während es vorher ganz easy ging. Nur das Statuspanel mit den 4 Anzeigen für die Position und die aufgezogenen Drawtools kann ich übernehmen. Das zieh ich Editfeldern vor. Außerdem hasse ich Hints, Tooltips sind im Statuspanel besser aufgehoben. Ist aber sicher Ansichtssache...



  • Hi

    Das mit dem Scrollrad ist nicht so schwer:

    TScrollBox (Der Urvater) hat doch ne OnMouseWheel- Methode!! Die wird bei mir bloss nie angsprochen? - Hab OnMouseWheel von Form Angepasst : Wenn Maus über der Box ruf ich MouseWheel der Box und geb die Windowsmessage weiter. 😉 Den Rest macht die von Box abgeleitete Klasse.

    Ausstanzen tu ich in Uebersichtsanzeige (die Klasse wie Du sie kennst; nur ergaenzt um Markierungsfunktion - abgeleitete Klasse TCutScrollerBox 😉 )

    Der markierte Bereich wird in einer zweiten Box angezeigt (selbe Klasse, nur ergaenzt um Zoomfunktionrn miot Maus / Scrollrad - abgeleitete Klasse TZoomScrollerBox 😉 )

    DESHALB hat 1. Klasse nur Grundfunktionen - kann davon verschiedene, sich wiedersprechende Ableitungen machen. 😃

    War 'mal gedacht fuer DIA-Bearbeitung:
    in einer Box Originalbild (Uebersicht) zum Markieren (exakt mit SpinEdits)
    in zweiter Box Markierter Teil in beliebiger Zoom- Groese
    -> Original bleibt in 1. Box erhalten.



  • OnMouseWheel gibt's hier nicht. BCB3 ist noch tiefstes MA. :p Die ScrollBox unterstützt Radscrolling. Aber über dem Image geht es nicht.

    Ah, du machst es grad umgekeht. Bei 100% arbeiten, im Zoom sehen, was du tust. Zum Ausschneiden nicht schlecht. Aber zum Bearbeiten soll es umgekehrt sein. Groß arbeiten, nebendran in der Originalgröße begutachten. Wie im Bildeditor. Da hast du mich übrigens auf eine Idee gebracht. Das spart das Zurückskrollen, wenn man die Arbeit begutachten will.

    Mit SpinEdits? Für sowas hab ich keine Geduld. Kann durchaus sein, daß ich sogar die Zoomstufen tastaturwählbar mache.



  • Original erstellt von <Omega-X>:
    OnMouseWheel gibt's hier nicht. BCB3 ist noch tiefstes MA. :p

    Ich weiß zwar nicht, was du mit MA meinst, aber du kannst trotzdem Radscrolling verwenden, indem du WM_MOUSEWHEEL abfängst.



  • MA ist das Mittelalter. 😉

    Dank dir für den Tip, @WebFritzi.



  • Das mit dem Scrollen klappt bei mir auch nicht freiwillig:

    ---Message erreicht die Box wie gesagt nicht! 😮

    ---Deshalb nehm' ich MouseWheel von Form und leite das bei Bedarf weiter
    ---an die Box 😉

    Bei Dir heist's also RadSrolling!? (Egal, ich hab BCB 4.0) Da musst Du in Form nach 'ner aehnlichen Methode / Ereignis suchen.

    Oder wie WebFritzi sagt, im Handler die WM_MOUSEWHEEL Message verarbeiten(weiterleiten an Box).

    Auf irgendeiner WEB- Seite im Delphi Bereich gab's mal eine Komponentefuer BCB, die MouseWheel- funktionen unterstuetz. Kannste ja mal suchen, ich weis nicht mehr wo. Bei mir geht's auch so (mit Trick). 😉

    Die SpinEdits nehm' ich nur fuer Feinabgleich (Pixelgenaues DIA- Format), grob- Markierung geht mit Maus - So wie Du Rechtecke malst! 😃
    (Der BCB 4.0 hat CSPinEdit mit Eingabefeld!)

    Wie man nun erkennt, gehen unsere Entwicklungen ganz schoen auseinander (hihihi) 😉

    PS:Komisch, Aehnlichkeiten sind trotzdem da! 😕

    [ Dieser Beitrag wurde am 11.03.2003 um 20:24 Uhr von DerAltenburger editiert. ]



  • Ach wo, Radscrolling hab ich einfach verwebdet, damit die deutsche Sprache nicht ganz aus der Mode kommen soll. :p Hier gibt es das ja in der VCL noch nicht.

    Jau, die Entwicklungen müssen ja auseinander gehen. Die Möglichkeiten für Interessenlagen sind enorm. 🙂 Ich seh da keinen Nachteil. Es wird immer überschneidungsbereiche geben, wo sich Lernpunkte ansetzen lassen.



  • Hat Dein TForm so was wie 'MouseWheel' oder 'OnMouseWheel' ?
    Dann dort einklinken!!!
    (Du sagtest doch, Die ScrollBox unterstuetze das?) 😮

    Sonst wie WebFritzi sagte! 😉

    Das mit den Ueberschneidungen ist OK, das regt doch manchmal an , in eine andere Richtung zu Denken! 😃 (Jetzt kann ich endlich malen 😉 )



  • Wie gesagt, ich hab die Methode 'OnMouseWheel' nicht. Trotzdem funktioniert die W(üh)lmaus bei Kompos, die Scrollbalken zur Verfügung stellen (RichEdit, Scrollbox...). Die Radfunktion wird ja bei der Einrichtung auf die Verschiebemethode der scrollbalken gesetzt. Von daher gibt's also keine Einschränkung.

    Die Radfunktion sollte hier aber den Zoomfaktor durchschalten können, wenn die Maus über dem Image ist. Weiß noch nicht, ob ich das über WM_MOUSEWHEEL hinbekomm. Muß Lesestoff zusammensuchen, um überhaupt zu sehen, was da zu tun ist. Windows-Botschaften standen bisher noch nicht auf dem Speiseplan. Aber das API hilft schon sehr viel bei der Forschung. - (Trotzdem, bei einschlägigen Beiträgen hab ich bisher nur Bahnhof verstanden. 🙄 ).



  • Sieht nicht gut aus fuer Dich 😃

    Aber kuck mal ob das geht:

    DYNAMIC void __fastcall MouseDown(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    DYNAMIC void __fastcall MouseUp(TMouseButton Button, Classes::TShiftState Shift, int X, int Y);
    DYNAMIC void __fastcall MouseMove(Classes::TShiftState Shift, int X, int Y);
    
    Die Hab ich im Header - public. Sind geerbt von TScrollBox!!!(Borland)
    
    in CPP- File hab ich:
    void __fastcall TImageZoomScrollBox::MouseWheel(TObject *Sender,TShiftState Shift, int WheelDelta, TPoint &MousePos, bool &Handled)
    {
      if (SolMeiZeugMachen)
      {
        //Hier steht was passieren soll. Z.B. Zoomen
        Handled=true;
      }
    }
    

    Wenn der BCB das annimmt sieht's gut aus!!!

    Falls das nur nicht funktioniert (wird aber compiliert!!!), dan muss noch WndProc- MessageHandling verbogen werden!(Muss ich mal kuckken ob ich dazu was finde) Bei mir geht's wie gesagt in Form->OnMouseWheel zu machen.

    Mal sehen ob WebFritze dazu noch was genaueres weis?

    PS : So, genug fuer heute 😃

    PS2:Mist, is' ja schon morgen :p

    [ Dieser Beitrag wurde am 12.03.2003 um 00:05 Uhr von DerAltenburger editiert. ]



  • Ah ja. "Über den langen Arm" Zugriff auf die ScrollBars der ScrollBox. Die Möglichkeit ist wirklich interessant. Sowas geht halt via Vererbung.

    Das nimmt dann aber die Möglichkeit, mit dem Rad was ganz anderes tun zu können - falls gelingt. Da beginnen dann die Überlegungen. Hab es auf jeden Fall mal gespeichert, dank dir.

    Ja, heute is schon morgen. 😃 Muß trotzdem noch'n Weilchen Knotteln. :p


Anmelden zum Antworten