In gezoomtes TImage pasten
-
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. :pIch 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 BoxBei 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