28. juli 2006 - 16:14Der er
5 kommentarer og 1 løsning
Hvorfor virker Canvas ikke i Borland C++ Builder?
Ifølge C++Builders hjælpfil skulle man kunne tegne direkte på en form ved hjælp af Canvas, f.eks Form1->Canvas->Ellipse(0,0,50,50), hvis altså den pågældende form hedder Form1. Det virker bare ikke. Det vil sige, det gør det, hvis jeg skriver det i en OnPaint-funktion, men i andre sammenhænge tegnes der ingenting. Jeg har derfor prøvet at sende en WM_PAINT message til både formen og dens Canvas, men det hjælper ikke. Er der nogen, der kan forklare det her? Jeg ved godt, at jeg kan komme udenom problemet ved at lægge et Image på formen eller på andre måder, men det mystificerer mig...
Skummelt! Det virker for mig. Jeg lavede en knap på formen og lagde Form1->Canvas->Ellipse(0,0,50,50)ind i dens onClick. Kan vi se noget af kildekoden? Mest så vi kan se hvorfra du laver kaldet.
Her er det skåret ned til det absolut minimale. Jeg starter C++ Builder og skriver linien "Form1->Canvas->Ellipse( 0, 0, 50, 50 )" i den første og eneste funktion, der er til start. Og så forsøgte jeg som nævnt uden held med en WM_PAINT message for at opdatere formen. Men det SKAL måske slet ikke virke her?
Du sætter det i constructor, den kode bliver kaldt før formen bliver tegnet, derfor bliver det overtegnet af formen selv. Hvis du ønsker at tegne på formen og det skal forblive der så skal du gøre det i OnPaint. Du kan også gøre det du tegner til et offscreen canvas som du så tegner på formen i OnPaint.
Nå, jeg kan se, at jeg har dummet mig. Jeg kunne heller ikke få det til at virke, når jeg satte linien Form1->Canvas->Ellipse(0,0,50,50) i OnKeyPress, men nu prøvede jeg igen - og så fungerede det. Hmm! Jeg ved ikke, hvad jeg har gjort... Men i hvert fald, tak for hjælpen ( og undskyld ulejligheden ). Tommya, lægger du et svar?
ingen grund til at undskylde, tror vi har været der alle sammen, held og lykke med det :)
Synes godt om
Ny brugerNybegynder
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.