Avatar billede segato Nybegynder
20. december 2006 - 12:01 Der er 4 kommentarer og
1 løsning

Custom Controls

Jeg har lavet mit eget treeview som nedarver fra ScrollableControl. Og de virker sådan set ganske fint. Syntes bare det anvender en del cpu når jeg sidder og scroller i det. Mit spørgsmål er hvad er typisk best practice når man laver en custom control? Sidder man lige som jeg gør og tegner Graphics.Rectangle alle mulige steder og hittester på dem. Og hver gang man f.eks.s scroller tegner jeg hele trædet igen. Eller er der andre smarte metoder? Måske at tegne hver node til et bitmap eller lign?
Avatar billede aaberg Nybegynder
21. december 2006 - 08:29 #1
Det er generelt en god ide, bare at tegne det som er nødvendigt at tegne, ved at bruge Invalidate metoden på et område. Når du scroller, bliver man nok nød til at tegne hele træet igen. Der er dit eget forslag med at bruge en grafikbuffer en glimrende ide, dette har jeg selv gjort på flere kontroller, og det virker ganske fint.
Avatar billede segato Nybegynder
21. december 2006 - 10:15 #2
Når du siger grafik buffer mener du så double buffering? Vil de give noget performance at tegne hver node som et billede i stedet for bare at anvende g.DrawRectangle ?
Avatar billede aaberg Nybegynder
02. januar 2007 - 08:44 #3
Hvis din node kun består af en rektangel, kan det ikke betale sig at tegne en bitmap for hver node, men hvis du udfører mange kald på Graphichs objektet for hver node, kan det godt betale sig. Det vil dog give betydeligt bedre performance, hvis du bruger en grafikbuffer for hele træet. Double buffering giver dårligere performance, da den først tegner alt ned i en grafik buffer, og derefter tegner det på skærmen, hver gang din OnPaint metode køres. Men hvis du laver din egen grafik buffer, som kun bliver opdateret når der er ændringer i træet, og nøjes med at tegne denne på din OnPaint, kan du få en betydelig performance forbedring.
Avatar billede segato Nybegynder
02. januar 2007 - 13:45 #4
Ok lyder super. Takker for hjælpen, kan du ikke smide et svar, så smider jeg lidt points!
Avatar billede aaberg Nybegynder
02. januar 2007 - 21:24 #5
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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