Avatar billede challenge Praktikant
10. juli 2010 - 11:36 Der er 3 kommentarer og
1 løsning

GDI graf

Hej Eksperter,

Jeg har lidt problemer med drawing vha. GDI i en ren Win32-applikation. Indtil videre har jeg været i stand til at tegne en 2D-graf og plotte datapunkter - mere eller mindre trivielt.
Mit vindue er designet således, at grafen tilpasser sin størrelse til en procentdel af den samlede vinduestørrelse, dvs. at jeg kalder InvalidateRect i WM_SIZE.
Problemet herom er, at min linje i grafen ikke altid fylder hele graf-arealet. Dette skyldes, så vidt jeg kan se, at GDI'en umiddelbart kun kan tegne i 1-pixel hele multiple. Resultatet heraf er, at min linje 'hopper' når jeg justerer mit vindues størrelse, og aldrig rigtigt fylder hele bredden (eller højden) af min graf - dette (tror jeg) da hvis der skulle ligges bare 1 pixel til hvert datapunkt (jeg har 100 i min test hér) ville linjen da være bredere end plot-arealet.

Mit spørgsmål hertil er åledes, om jeg på nogen måde kan være i stand til at tegne med sub-1 pixel multiple i intervallerne mellem datapunkterne, således at min graf altid vil fylde 100% af arealet, og ikke 'hoppe' grundet '1-pixel-minimums-problemstillingen', som jeg umiddelbart tror er skyld i problemet.

Mange tak for hjælpen.
Avatar billede arne_v Ekspert
10. juli 2010 - 16:02 #1
Pixel er den mindste enhed der vises på skærmen. HVordan skulle du kunne vise noget mindre end pixel??
Avatar billede challenge Praktikant
14. juli 2010 - 20:24 #2
Jeg er med på, at jeg selvfølgelig ikke kan vise mindre end 1 pixel. Lad mig prøve at illustrere min pointe på anden vis;

Antag at jeg tegner en graf, og plotter 100 datapunkter. Mit grafareal er 200px bred, og som resultat vil intervallet mellem mine punkter være 2px. Hvis jeg nu resizer min graf til at være 240px bred vil intervallet mellem mine datapunkter være 2,4px, men siden intervallet skal være en integer rundes dette--som du selv pointerer--ned til 2px. Selvom jeg altså har resizet min graf har mine datapunkter ikke rykket sig overhovedet; de fylder ikke hele grafområdet. Programmer som Excel har dog intet problem med dette.

Bør jeg bruge eksterne libraries til dette? DirectX? Overkill?
Avatar billede challenge Praktikant
18. juli 2010 - 19:39 #3
Jeg må vist gøre brug af Direct2D - rendering skulle ved hjælp heraf efter sigende også være hurtigere...
Avatar billede challenge Praktikant
18. juli 2010 - 19:39 #4
...
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