Avatar billede backupmand Nybegynder
08. april 2002 - 19:54 Der er 3 kommentarer og
1 løsning

Problem med opdatering af grafik

Jeg har en klasse, der tegner
6 rækker med 4 kolonner af grå firkanter
på et canvas.

min paint metode kalder denne klasses
paint metode (koden er alt for lang til
at blive postet her) med nogle
parametre for hvilken firkant der
skal have ny farve.

Problemet er bare, at når jeg opdaterer
den ene firkants farve, forsvinder
alle de andre grå firkanter.

Er der nogen der umiddelbart kan høre hvad
det er jeg mener?

Tak

Avatar billede jakoba Nybegynder
08. april 2002 - 19:56 #1
lyder somom dit canvas er buffereret så du skal gentegne hele billedet hver gang før du opdaterer.
Avatar billede jkrag Nybegynder
10. april 2002 - 01:26 #2
Hvis den klasse du har lavet er en component af en slags, så skal du vel ikke selv kalde paint. Paint metoden bliver i så fald kaldt af systemet (via repaint og update) således at den for leveret en passende graphic context der siger hvilket område den skal gentegne.
Hvis denne forklaring ikke passer på dit problem, så må du nok uddybe lidt mere. Du behøver jo ikke paste hele koden for at forklare - nogle korte beskrivelser af hvilke typer dine forskellige klasser har og hvad der bliver kaldt hvorfra kan hjælpe meget på forståelsen.
Avatar billede backupmand Nybegynder
12. april 2002 - 17:39 #3
helt præcist er problemet nu:

jeg har et dobbelt-array på [7][4], som jeg opdaterer for hver gang
der trykkes på 1-6 forskellige knapper. Alt efter hvilken
knap der trykkes på, indsættes der en værdi i dobbeltarrayet,
som initielt har -1 på alle pladser. Efter hvert knap-tryk kalder
jeg en paint metode i en anden klasse som skal tegne den farve,
som tallet på arrayets position angiver. Denne anden klasse henter
arrayet ned fra den første klasse og svøber to for-løkker rundt
om en switch på dobbelt-arrayet..

således:

for (int i=6;i>-1;i--)
          {
          for (int j=0;j<3;j++)
            {
                      switch(tst.a[i][j])

Dvs første position den løber igennem er indhold på [6][0], næste er
[6][1] og så fremdeles.

alt efter hvilken talværdi den møder, tegnes en char på en x,y position
på skærmen således:

    switch(tst.a[i][j])
                {
                  case -1: g.setColor(Color.gray);
                          g.drawChars(fst,0,len,x,y); break;
                  case 0 : g.setColor(Color.black);
                          g.drawChars(fst,0,1,x,y); break;
                  case 1 : g.setColor(Color.blue);

        osv...

Det er grundstenen til et mastermind spil, der er under udvikling.

Jeg ved ikke hvor meget mere jeg kan forklare lige nu, andet end at
når arrayet opdateres tegnes der IKKE den pågældende char på skærmen.

Jeg kan ikke lige se hvorfor.

PÅ forhånd tak
Avatar billede backupmand Nybegynder
29. august 2002 - 00:02 #4
Jeg fik det aldrig til at virke.
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