![]() |
Zoom in einer Paintbox!
Hallo,
ich habe eine Paintbox, in der ist ein Fraktal eingezeichnet. Jetzt muss ich es irgendwie hinbekommen, das ich in der Paintbox einen Bereich markieren kann, und genau dieser Bereich dan auf die volle größe der Paintbox neu gezeichnet wird. Danke. PS: Diese Frage ist nicht so wichtig aber ich denke sie ist leichter zu beeantworten als die obige. Also wie kann man das Bild in Paintbox1.canvas in die Zwischenablage kopieren und danach wieder in Paintbox1.canvas einfügen? |
Re: Zoom in einer Paintbox!
Sry, Fehlpost!
|
Re: Zoom in einer Paintbox!
Hallo,
Hier mal ne Procedur, mit der du einen Canvas zoomen kannst:
Delphi-Quellcode:
Um jetzt einen bestimmten Bereich zu erfassen, würde ich die Paintbox in eine Scrollbox packen. Dann sollte das ganze kein Problem darstellen.
procedure SetCanvasZoomFactor(_Canvas: TCanvas; _ZoomFactor: Integer);
begin if _ZoomFactor = 100 then begin SetMapMode(_Canvas.Handle, MM_TEXT); end else begin SetMapMode(_Canvas.Handle, MM_ISOTROPIC); SetWindowExtEx(_Canvas.Handle, _ZoomFactor, _ZoomFactor, nil); SetViewportExtEx(_Canvas.Handle, 100, 100, nil); end; end; grüße, daniel |
Re: Zoom in einer Paintbox!
Und wie funktioniert das erfassen eines bereiches in einer scrollbox? Es tut mir Leid, das ich hier mit solchen Anfängerfragen komme aber ich mach Delphi erst seit einem monat und muss das erst mal alles verstehen. :roll:
MfG |
Re: Zoom in einer Paintbox!
Hallo an alle,
ich versuche mich gerade auch an einem Paint-Klon. Die Grundfunktionen habe ich alle schon fast fertig. Da ich gerade verasuche die Lupe zu programmieren bin ich beim Suchen auf diesen Forumeintrag gestossen. Ich verstehe die Anwendung des oben gezeigten Quellcodes zum zommen nicht. Hätte ihn gerne mal in meinen eigenen Projekt getestet. Wäre für Erklärungen sehr dankbar. Herzlichen dank schonmal im vorraus Quivadis PS: Ich male mit Canvas in ein timage.bitmap, da da schon speichjern mit drin ist usw. |
Re: Zoom in einer Paintbox!
@ Quivadis: Bitte nur eine Frage pro Thread, sonst wird's unübersichtlich.
@ Darklord: Du hast doch sicher irgendwo gespeichert, welches Intervall deines Fraktals angezeigt werden soll, z.b. von 0 bis 500 auf der x-Achse und nach oben von 500 bis 1000. Wenn du jetzt mit der Maus irgendwo hinklickst und damit eine Ecke des neuen Ausschnitts auswählst, kannst du dir die Mauskoordinaten in Intervallkoordinaten umrechnen. Wenn deine Canvas 500 Px breit ist und du bei x=100 drauf klickst, weisst du, dass dein neues Intervall bei 100 beginnt. Mit ein bischen Mittelstufenmathe wie dem Strahlensatz kannst du so recht einfach die Mauskoordinaten umrechnen. Wenn du das Gleiche für das OnMouseUp machst, hast du da recht schnell die neuen Koordinaten. Wenn du dir noch einen Rahmen um den ausgewählten Bereich anzeigen lassen willst, wird dir Penstyle psxor gefallen. Damit invertierst du beim Zeichnen den die Farbe des Untergrunds, d.h. wenn du eine Linie doppelt zeichnest, ist sie wieder weg. Zeig mal das Prog wenn du fertig bist, Fraktale sehen immer gut aus. |
Re: Zoom in einer Paintbox!
@ Toxman: Quivadis hat doch garnkeine neue Frage gestellt, er wollte doch nur wissen wie genau die Procedure da oben geht..
Da ich die Procedure da oben auch nicht wirklich verstehe würde mich das auc mal interesieren. MfG |
Re: Zoom in einer Paintbox!
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hab mal schnell ein kleines Demo-Programm gebastelt, wo ein Canvas gezoomt wird.
Siehe Anhang. Ich hab dabei aber weder auf Performance, noch auf Fehlerlosigkeit geachtet. Es soll nur zeigen, wie man es anwendet. grüße, daniel |
Re: Zoom in einer Paintbox!
So ich habs jetzt mit zoom hinbekommen :-D
Aber wie ist das mit Penstyle auf psxor stellen? Den find ich nicht in der Hilfe und auch bei Google find ich auch nichts dazu! Das hört sich aber so an als wärs genau das richtige. Vielleicht kann mir ja nochmal jemand helfen. DANKE |
Re: Zoom in einer Paintbox!
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:49 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz