Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Image vergrößern wie bei MS-Paint (https://www.delphipraxis.net/101100-image-vergroessern-wie-bei-ms-paint.html)

matashen 8. Okt 2007 13:57


Image vergrößern wie bei MS-Paint
 
Hallo zusammen,

der Titel ist vieleicht etwas doof gewählt,

aber zu meinem Problem:
Hab hier ein kleines Zeichenwerkzeug gebaut, benötige dafür eine Zoomfunktion. Mir würde da sowas wie in Paint vorschweben, also Zoomstufen 200%, 400%, 800%. Ich möchte aber beim Zeichnen dann nicht ständig prüfen müssen welche Nachbarpixel ich noch manipulieren muss. Weis jemand wie MS-Paint das macht.

Gruß Matthias

PS: Hab die Hilfe schon in sämtlicher Suchwörterfolge bemüht aber leider nix brauchbares gefunden

Alien426 8. Okt 2007 14:00

Re: Image vergrößern wie bei MS-Paint
 
Wie wäre es mit einem DrawGrid? Ähnlich wie hier.

matashen 8. Okt 2007 14:07

Re: Image vergrößern wie bei MS-Paint
 
Gefällt mir nicht so, möchte eigentlich vermeiden das ich beim Manipulieren des Bildes (Zeichnen) ständig das Bild in einem anderem "Raum ansprechen muss" - Wird bei mir dann kompliziert. Sowas wie "Imagepaintdouble" gibts nicht?
Manipuliere damit Elektronikpläne und die Daten dazu können umfangreich sein.

Hat noch jemand ne andere Idee.

Nochmal die Frage: wie macht MS-Paint das - dort werden doch nur MS-Boardmittel verwendet die ich nicht kenne ???

Gruß Matthias

Namenloser 8. Okt 2007 14:27

Re: Image vergrößern wie bei MS-Paint
 
Ich habe mal soetwas programmiert - ist eigentlich ganz einfach. Du speicherst den Faktor für die vergrößerung in einer Variable (1 für 100%, 2 für 200%,1.5 für 150% usw). Dann setzt du bei einem Image die Eigenschaft Stretch auf True und multiplizierst dessen Eigenschaften width und height mit dem Faktor. Im MouseMove oder Mousedown oder whatever teilst du dann die Koordinaten durch den Faktor, und schon hast du die "echten" Koordinaten auf dem Bild.

Alien426 8. Okt 2007 19:15

Re: Image vergrößern wie bei MS-Paint
 
Eine andere Möglichkeit wäre es, das Raster als Bitmaske zu erstellen und nur für die Darstellung die Werte des Bildes per AND (?) zu verknüpfen. So beeinflusst das Raster das Zeichnen nicht und es müsste trotzdem gut dargestellt werden können.

matashen 9. Okt 2007 14:35

Re: Image vergrößern wie bei MS-Paint
 
Hallo zusammen,

hab den Vorschlag von Namenlozer eingebaut, möchte mich noch für alle Antworten bedanken. Funktioniert wirklich SUPER, und blieb trotzdem simpel. :dp:

Gruß Matthias

...dann mal weiter :coder:

OregonGhost 9. Okt 2007 14:41

Re: Image vergrößern wie bei MS-Paint
 
Eine Alternative wäre auch noch eine Matrixtransformation. Viele neuere Grafik-APIs, einschließlich der GDI+, unterstützen das von Haus aus. Dann musst du im Prinzip gar nichts mehr umrechnen (abgesehen davon natürlich, dass die Mausposition ebenfalls die Transformation durchlaufen muss, um den richtigen Pixel zu finden).


Alle Zeitangaben in WEZ +1. Es ist jetzt 19:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz