webForumDet fria alternativet

Ram runt pekaren?

7 svar · 344 visningar · startad av pettsson

pettssonMedlem sedan jan. 2002777 inlägg
#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...

pettssonMedlem sedan jan. 2002777 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 :(

spangoMedlem sedan juni 20006 147 inlägg
#3

Var skulle du rita om inte ovanpå bilden?

pettssonMedlem sedan jan. 2002777 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.

PhorpherMedlem sedan feb. 20002 059 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.

pettssonMedlem sedan jan. 2002777 inlägg
#6

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

PhorpherMedlem sedan feb. 20002 059 inlägg
LimeMedlem sedan sep. 2001837 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.

Genererad på 366 ms · cache AV · v20260730165559-full.f96bc7eb