[VB6] Grafik verschieben, Logikproblem

  • Ersteller Gelöschtes Mitglied 710
  • Erstellt am
G

Gelöschtes Mitglied 710

Hi,

scheinbar bin ich zu blöd für sowas oder ich übersehe etwas.

Ich entwickle mit Visual Basic 6 gerade eine Applikation, mit der ich in einer Voransicht einen Bildausschnitt passig verschiebe und diesen dann nachher aus dem Originalbild speichern will.

Das Originalbild hat die Maße 3088x2048 Pixel BxH (kann aber auch variieren). Die Picturebox für die Voransicht hat die Maße 582x378. Jetzt rechne ich das Original auf 19% herunter, damit es annähernd komplett in die Vorschau passt. Jetzt schiebe ich das Vorschaubild zurecht und habe nun eine Nase genau in der Mitte des Bildes.

Nun geht es los. Jetzt will ich das Bild hochskalieren auf 30% und möchte danach die Nase immer noch in der Mitte des Bildes haben.

Der Ablauf der Skalierung und des Verschiebens ist folgender:

1. Laden des Originals in Picture1 ( 3088x2048 )
2. Runterskalieren des Originals auf 19% in Picture2 ( 586x389 )
3. Einpassen eines Ausschnitts aus Picture2 in Picture3 (Vorschau, 582x378 )

In Picture3 kann ich nun mit Mousedown, Mouseover, Mouseup das Bild, soweit möglich, verschieben. Dabei fülle ich 2 Variablen mit den jeweils aktuellen X und Y-Startwerten des Ausschnitts, den ich dann aus Picture2 generiere.

Jetzt setze ich die Skalierung auf 30%. Picture2 generiert sich in den Maßen 926x614 von dem Original neu, die Vorschaumaße bleiben. Jetzt will ich Picture3 so anzeigen, dass die besagte Nase immer noch in der Mitte ist, nur eben grösser.

Und für genau das Vorhaben fehlt mir jetzt die Berechnung, wie ich die X/Y-Startwerte, die ich ja habe, auf die neuen Maße umrechne. Einfacher Dreisatz für die erhöhte Skalierung tuts nicht.

Ich hoffe, dass ich alle Unklarheiten beseitigt habe und freue mich nun auf Antworten von Mitmenschen, die logischer denken können als ich (und das werden einige sein).

Vielen Dank und Gruß,
HoloDoc
 
Zuletzt bearbeitet von einem Moderator:
wenn ich das richtig verstanden habe hast du ja die breite und höhe des 19% igen Bildes

dann kannst doch einfach rechnen

maße = (bildbreite/100)*130 ergibt deine besagten 30 % vergrößerung

maße/2 sollte deine Skalierung ergeben für die Positinierung

das gleiche bei der höhe oder geht diese Variante nicht :-?
 
Das greift leider nicht.

1. 19%-Bild = 586x389
2. 30%-Bild = 926x614

Immer vom Original ( 3088x2048 ) ausgehen.
 
Auf die schnelle fällt mir da nur folgendes ein:

Du hast ein Bild auf 19% skalliert. Nun willst du das auf 30% (vom Original) skallieren.
D.h. Du berechnest die Mitte des 19% skallierten Bildes. Dann bekommst du einen Punkt raus. Nun rechnest du das auf die 100% zurück (auf das Originale). Dann weißt du, wo der Punkt im Originalen liegt. Nun skallierst du auf die 30% (vom Originalen) und kannst dann den Punkt berechnen, (vom originalen weg) wo dieser auf dem 30% skallierten liegt. Dann zeigst du das Bild dementsprechend an.

So in etwa wolltest du das :?: Das sollte doch so funktionieren?
 
Hi,

jau, das war der Denkanstoss, der mir gefehlt hat.

Danke Dir.

Gruß,
HoloDoc
 
HoloDoc schrieb:
Das greift leider nicht.

1. 19%-Bild = 586x389
2. 30%-Bild = 926x614

Immer vom Original ( 3088x2048 ) ausgehen.

sorry muss nochmal nachfragen

wieso greift das nicht das sind doch 19% und 30 % ???

also bis auf 0,02 . 0,03 % ;)
ich habe wohl dein Prob net ganz verstanden :-?