In gezoomtes TImage pasten



  • Ja, ja in der Art ..... (ohne Ende zu tun).

    Viele Effekte moeglich. Aber wie?

    Recht einfach:
    Neues Bild d'rueberschieben
    - Altes dabei ev. vornewegschieben
    - Richtung waehlbar
    Schon besser:
    Bild von Zentrum aus langsam aufblenden / aufzoomen
    Bild seitlich darueberblenden (ohne Schieben)
    Sehr interessant: 🙂
    Bild langsam hineindrehen (???)
    - altes ev. vorneweg 'rausdrehen (???)
    Bild langsam darueberkruemeln.
    .
    .
    .
    usw.

    Da gehn die einfachen Tricks mit TImages nicht mehr gut! 😞

    In die Richtung will ich mal probieren. Denk aber im Moment nicht allzutoll darueber nach. Da sollte man 'n gutes Konzept machen, sonnst verzettelt man sich schnell.

    PS: am besten in 'ner abgeleiteten Klasse. Nach totalem Verheddern hat man immer noch seine Alte. 😃 😃

    [ Dieser Beitrag wurde am 10.03.2003 um 21:20 Uhr von DerAltenburger editiert. ]



  • Ah ja, Überblendeffekte für Bilderserien. Teilweise völlig verschieden von den Interessen im Malprogramm.

    Für das Drehen gibt es ja Tutor, zB. http://www.leunen.com/cbuilder/rotbmp.html . Dann müßte man mit gestauchten Einblendungen zB. vom Zentrum aus beginnen, langsam größer werden. Wenn man jetzt noch an Sternlinien länger pausiert, dann immer schneller anzeigt bis zur nächsten Sternlinie (oder in einer Kurve beschleunigen und wieder langsamer werden), könnte ein Lamelleneffekt entstehen, Fotoblende.

    Langsam reinkrümeln? Wie frage ich Farbe, Sättigung, Helligkeit ab (wie im ColorDialog)? Das wär ganz wichtig. Hab meine Farbpaletten nach den 3 Parametern zusammengestellt. Automatisierbarkeit wär der Traum. Hab aber NULL PLan. Irgendwie müßte sich das aus den BGR :p -Werten bzw. aus den Verhältnissen ermitteln lassen.

    Erst die gesättigten und hellen Farben übertragen, nach und nach die markanteren. Das wär das Ziel dieser Vorbereitung. Man kann natürlich auch mit harten Kontrasten krümeln bzw. reinnebeln.

    Mich würden ja mehr die Verfremdungseffekte wie Antikisieren usw. interessieren. Aber solche Sachen müssen warten. Bin noch ganz am Anfang. - Ist auch klar, Profialgors werd ich sicher nicht hinbekommen. Ein starker Trost ist zB. daß TImage einen recht guten Interpolierungsalgor mitbringt. Das ist von der Projektaufgabe her ohnehin ein zentrales Anliegen.

    <edit>Ja ja, Der Altenburger und die Klassen. :p Mir wär das im Moment noch zu "starr". Ich taste mich vor, muß zu viel expirimentieren. Da muß also erst die Erfahrung wachsen. -- Meine "Klassen" sind zwischengespeicherte erst mal gelungene Abschnittsversionen. 😃



  • "Sanden" wär ja ganz einfach zu zu realisieren. Ein Random-Pixel wird direkt übertragen oder eine Schleife läuft bis zu dem rausgedeuteten Pixel und überträgt es.

    Das läßt sich dann zu Körnern, Klumpen, Figuren ausbauen. So geht es natürlich schneller.

    Man kann auch definieren, daß der Random weitersucht, wenn er einen Wert schon mal hatte und nur jeweils neue Pixel benennt.

    Zum richtigen Zeitpunkt dann eine Gesamtübertragung zum Fertigzeichnen. - Aber weiß nicht, ob sowas gut aussehen würde. Gezielt nach Farbauswahl + Random wär besser.



  • Hi Omega-X

    Ich seh' schon, wir basteln jeder 'was ganz anderes! 😃

    Du willst vorrangig Bilder 'bearbeiten', mir geht's mehr um Anzeigeeffekte!(noch 😃 ). Trotzdem viele Beruehrungspunkte dagewesen!

    Deine Einstellung zu Klassen / Komponenten ist noch nicht optimal! 😕 (Geht mir aber auch manchmal so) Es ist nicht einfach am Anfang 'n gutes Konzept zu erstellen - aber wichtig! Die Frage ist auch: Brauch ich am Ende alles, was in Klasse 'reindefiniert wurde? Vielleicht brauch ich 'mal 'ne Klasse die nicht alles kann oder einiges anders macht?

    Klar kannst Du die 'zwischengespeicherten' Versionen zu einer neuen, anderen Klasse erweitern - dann ist aber bis dahin alles (parallel) reingeschrieben.

    Probleme haste, wenn erste Klasse schon zu viel kann - das kriegste nicht 'raus.
    Z.B.: Du brauchst 2 Kompos, die vieles gemeinsam koennen sollen aber voellig verschieden auf die Maus reagieren sollen??? Dann ist eine gute Klassenhierarchie gut - die ist aber spaeter nur schwer 'reinzubringen! (Ich musste 'mal so'n Ding machen - Hab' alles neu angesetzt - war schneller als Anpassen)

    Unsere Kompos laufen jetzt stark auseinander!

    Der ImagScroller war meine 1. Stufe. (Hab' davon auch 'ne PaintBox gemacht 😉 )

    Haupsaechlich hab' ich davon zwei getrennte Richtungen abgeleitet:
    -- Box zum Zoomen / Rollen mit Mausbedienung/Scrollrad
    -- Box zum Ausstanzen (pixelgenau) mit Maus /Editfeldern und Anzeige in 2. Box
    -> die geh'n beide in ganz ander Richtung.

    Verwenden kannste alle Klassen - auch die Zwischenstufen - je nach Bedarf (Ich hab' z.B. alle 3 in einem Programm)

    Deshalb: denk von Anfang an an die Vererbung!!!
    (Du sparst Dir spaeter viel Arbeit!!!) :p



  • 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