Bild Zoomen

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

pile

Betreff: Bild Zoomen

BeitragFr, Mai 25, 2007 19:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe ein großes Bild mit 3342x2229 Pixeln und das Gleiche nochmal in klein 1024x683.
Wenn man mein Programm startet, sieht man zuerst das kleinere Bild, da es komplet auf den Bildschirm passt. Wenn man jetzt mit der Maus auf das Bild kilckt, wird das Größere gezeichnet, also es wurde "rangezommt". Nur, ich möchte das das was ich vorher mit der Maus angeklickt habe, genau auf die Bildschirmmitte zentriert wird (nur in Größer halt). Kann mir da jemand helfen?

So weit hab ich es ja schon, aber es klapt damit nicht so recht:
Code: [AUSKLAPPEN]
If Mousedown(1)=1 then Mapzoom=True:BX=MouseX:BY=MouseY
If Mapzoom=True then DrawImage Bigimage,-BX,-BY
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Mai 25, 2007 19:33
Antworten mit Zitat
Benutzer-Profile anzeigen
Das geht mit dem Dreisatz plus einer Addition.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

pile

BeitragFr, Mai 25, 2007 19:40
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, danke erstmal. Also mit dem Dreisatz rechne die Unterschiede der Bildschirmmaße aus, aber was mach ich mit der Addition?
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

StepTiger

BeitragFr, Mai 25, 2007 20:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Naja, du hast ja dann das Format des angezeigten, also gezoomten Bildes, bzw. kannst es ausrechnen.

Nun ziehst du vom Bild davor die neue Position minus die Pixel der Maus mal den Faktor minus die Hälfte des neuen Bildformates ab. Et voila!

Klingt komisch, ist aber so ^^

Code: [AUSKLAPPEN]
grwid=GraphicsWidth()
grhei=GraphicsHeight()

wid=1024
hei=768
zoomfak#=2.

mousex=100
mousey=100

xpos=mousex*zoomfak#-grwid/2
ypos=mousey*zoomfak#-grhei/2


Bin mir nicht sicher, aber ich glaube, das dürfte gehen.
Noch gestern standen wir am Abgrund, doch heute sind wir schon einen Schritt weiter.
Computer:
AMD Sempron 3000+; ATI Radeon 9800 Pro; 512 MB DDR RAM 400Mhz; Asus E7N8X-E Deluxe; Samsung 200GB HD 5.4ns acces t
Gewinner: BP Code Compo #2
Π=3.141592653589793238...<--- und das aus dem kopf Laughing
Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser.

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Mai 25, 2007 21:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Was mir grad noch so einfällt ist, das ganze in Verbindung mit ql:MidHandle zu machen. Beide Bilder werden in ihrem Koordinatenursprung zur Mitte gesetzt und das kleine Bild auch in der Mitte des Bildschirmes eingezeichnet. Bei klicken auf dem kleinen Bild wird dann die Mauspositiondifferenz aus der Mitte zum großem Bild mit einem fixem Skallierungsfaktor (Skallierung#=GroßesBild/KleinesBild) multipliziert positioniert.

edit1: Damit ich mir meiner Sache auch sicher bin, habe ich mal ein kleinen Selbstversuch gemacht. Code: [AUSKLAPPEN]
Graphics 400,300,0,2

kbild=CreateImage(400,300)
SetBuffer ImageBuffer(kbild)
For q=0 To 600 Step 4
 Color Rand(0,255),0,0
 Line 0,0,600-q,q
Next

gbild=CopyImage(kbild)
ScaleImage gbild,3,3
Color 255,255,255

MidHandle kbild
MidHandle gbild

SetBuffer BackBuffer()




While Not KeyHit(1)
 mx=MouseX()
 my=MouseY()

 If MouseDown(1)
  DrawBlock gbild,200+(200-mx)*3,150+(150-my)*3
 Else
  DrawBlock kbild,200,150
  Rect mx-66,my-50,132,100,0
 End If

 Flip
 Cls
Wend
End
  • Zuletzt bearbeitet von hectic am Fr, Mai 25, 2007 21:16, insgesamt einmal bearbeitet

pile

BeitragFr, Mai 25, 2007 21:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antworten, ich werde es probieren wenn ich nicht so saumäßig müde bin von der Arbeit Smile . Also bis dann.
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

pile

BeitragDo, Mai 31, 2007 18:57
Antworten mit Zitat
Benutzer-Profile anzeigen
@StepTiger: Danke für deine Hilfe aber das hat leider überhaupt nicht funktioniert bzw ich bin nicht durchgestiegen und dein Beispiel hat leider auch nicht gepasst.

@hectic: Dein Beispiel konnte mir auch nicht weiterhelfen, aber der Ansatz mit MidHandle hat super geholfen und ich habs jetzt so gemacht, vielen Dank!
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238%

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group