Avatar billede jesperbaldur Nybegynder
03. marts 2006 - 11:56 Der er 8 kommentarer og
1 løsning

Events på graphics

Jeg er i gang med et lille projekt som i bund og grund er et lille tegneprogram.
Der er et område, som indtil videre er en picturebox, hvor man kan tegne i et grid med snappunkter hvert 20. pixel. Det eneste man kan tegne er linier mellem disse snap-punkter.
Jeg tegner basalt set en linie med flg kode:

gr.DrawLine(Pens.Black, 110, 25, 300, 150)

Mit problem er så at jeg gerne vil have nogle events på denne linie. Fx hvis man dobbeltklikker på den, eller man kører musen hen over.
Jeg sidder og tænker på om man skal lave en custom control som nedarver fra et eller andet der har disse events, men jeg er lidt på herrens mark med custom controls, da jeg ikke har arbejdet med dette før.
Det kan også være det skal/kan laves på en helt anden måde.
Avatar billede Slettet bruger
03. marts 2006 - 12:40 #1
Du skal selv checke om musen er over eller på en linie du selv har tegnet. Det vil sige når du får mus koordinater på et move eller click så skal du checke din model for om den position er på noget du har tegnet.
Avatar billede jesperbaldur Nybegynder
03. marts 2006 - 14:03 #2
Ja sådan kunne man selvfølgelig lave det.
Det ville bare være smart hvis man kunne lave en custom line control der havde sådanne events.
Avatar billede Slettet bruger
03. marts 2006 - 14:06 #3
Hvir du vil lave den enkelte lige til en kontrol så ville jeg droppe den tanke.
Avatar billede jesperbaldur Nybegynder
03. marts 2006 - 16:14 #4
Ja men et andet problem jeg nok vil få er at det skal være muligt at slette en linie efter den er blevet tegnet, fx ved at man vælger den med musen.
Det kan jeg ikke umiddelbart se hvordan jeg kan lave. Har du et forslag.
Avatar billede Slettet bruger
03. marts 2006 - 16:18 #5
Du skal have en model af den tegning brugeren laver i form af objekter.

Den model tegner du så for brugeren og derved giver du en brugergrænseflade.

Når brugeren sletter en linie sletter du linie-objektet i modellen og gentegner modellen og linien vil være væk i grænsefladen.

Det gælder også når du skal checke om brugeren trykker på en linie, du checker i modellen og ikke i grafikken.

Håber du forstår pointen ??
Avatar billede jesperbaldur Nybegynder
03. marts 2006 - 17:00 #6
Tænker du på at lave et objekt, fx LineObjekt med oplysninger om en linie: (x1,y1), (x2,y2)
Denne collection af LineObjekt'er løbes så igennem og for hvert LineObjekt tegnes en linie.
Men hvordan kan man tjekke om man fx dobbeltklikker på en af disse LineObjekt'er. Skal hvert objekt så have et area som definerer hvilke pixels, relativ til et startpunkt for linien, som den pågældende linie "dækker" og så tjekke for intersection mellem alle LineObjekt'er og musepositionen, eller hvordan kan man lave det smart
Avatar billede Slettet bruger
04. marts 2006 - 06:02 #7
Ja du skal lave en objektmodel med linie objekter og tegne dem.

Du skal have din gamle geometri bog frem og regne ud om det punkt der bliver trykket på ligger på linien.
Avatar billede jesperbaldur Nybegynder
08. marts 2006 - 11:46 #8
Jeg takker for input. Nu ved jeg hvordan jeg kan gribe det an.
Gider du skrive et svar.
Avatar billede Slettet bruger
08. marts 2006 - 16:23 #9
svar;)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester