Bild Zoomen
Übersicht

![]() |
pileBetreff: Bild Zoomen |
![]() Antworten mit Zitat ![]() |
---|---|---|
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% |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Das geht mit dem Dreisatz plus einer Addition. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 ![]() Seit der Earthlings-Diskussion überzeugter Fleisch(fr)esser. |
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Danke für die Antworten, ich werde es probieren wenn ich nicht so saumäßig müde bin von der Arbeit ![]() |
||
MfG. Pile
Aktuelles Projekt: Irgendwas in den BlitzEditor eintippen und sehen ob was dabei rauskommt. Fortschritt: ca. 3.141592653589793238% |
![]() |
pile |
![]() Antworten mit Zitat ![]() |
---|---|---|
@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% |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group