webForumDet fria alternativet

Ram runt pekaren?

Java

7 svar · 344 visningar · startad av pettsson

Medlem sedan jan. 20021 122 inlägg
Frågan#1

Jag har en BufferedImage som visar (oväntat nog) en bild. Denna bild ska man kunna zooma in i. Just nu har jag så att när man trycker på bilden så zoomar man in en viss mängd.
Jag vill att man ska kunna se vilket utsnitt man kommer zooma in på, alltså visa en rektangel som har rätt propotioner som följer pekaren runt över bilden. Frågan är alltså hur jag gör detta? Jag antar att jag får använda mouseMoved och mouseEntered, men på vad ska jag rita rektangeln? Att rita ovanpå bilden är förstås en möjlighet, men det verkar bara dumt. :) Några tips? Har ingen ide alls om vilken klass jag ska titta på ens...

Medlem sedan jan. 20021 122 inlägg
#2

Inga förslag? Min lärare vet inte heller hur man gör, men jag vill ju ha den här funktionen :(

Medlem sedan juni 20008 205 inlägg
#3

Var skulle du rita om inte ovanpå bilden?

Medlem sedan jan. 20021 122 inlägg
#4

Alltså att skriva över den data som finns i bilden och temporärt spara den någon annanstans verkar varken vara effektivt eller bra ;) Det var så jag menade.

Medlem sedan feb. 20002 300 inlägg
#5

Rita en rektangel som en muspekarbild. Du kan ju göra det "on the fly" så kan du få olika storlek på den t.ex. Sen ser du till att när muspekaren är över bilden så visas rektangelpekaren. Annars den vanliga pilen.

Medlem sedan jan. 20021 122 inlägg
#6

Hmm, hur ändrar man pekaren? Får väl köra det på mouseEntered, men vilken klass hanterar pekarens utseende?

Medlem sedan feb. 20002 300 inlägg
Medlem sedan sep. 2001961 inlägg
#8

Allstå... Jag tror att ni är lite fel ute. Det är inte pekaren som ska ändras egentlinge. Vad man gör är att när man är i zoom-läge, t.ex genom att man har tryck in en zoom-knapp så registrerar man vilken punkt i bilden som pekaren är på just då. Denna lagras.

Vid det tillfället aktivera man även en onMouseMove-lyssnare som kollar var pekaren är när den flyttas. Baserat på dessa två ritar man en rektangel, men inte på den valda bilden, utan på ett nytt layer ovanför.

När man sedan släpper så tar onMouseRelease-metoden båda de punkter som man har fått och zoomar in bilden under.

Håller på med lite kod som gör det här men är inte riktigt färdig.

257 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
128 ms — deklarationer (db)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)
123 ms — ändringar (db)