Gå til innhold
🎄🎅❄️God Jul og Godt Nyttår fra alle oss i Diskusjon.no ×

Tegne ting på image.canvas


Anbefalte innlegg

Har lagd et spill i Delphi 5 (link i sig.en) der grafikken blir tegnet på canvasen til et TImage-objekt. Dette ser bra ut i Delphi 5 (tegner over med en hvit firkant (canvas.rect(tpoint,tpoint eller.no sånt)) og klætter på ny grafikk fra en ImageList. I Delphi 5 funker dette fint, men i Delphi 6 kommer det grønne striper (form1.color er grønn) i bildet når det blir tegnet. Har prøvd med en PaintBox i stedet for Image, da fungerer det bedre, men jeg får fortsatt små hvite striper (grønne når jeg skipper canvas.rect) når deler av bildet tegnes på nytt. Noen som har råd/ideer (unntatt å fortsette med Delphi5)?

Synes også EXE-filene blir uforholdsmessig store, selv etter at jeg skipper alle design time-komponentsamlinger jeg ikke bruker. Hvis det finnes en måte å krympe dem, uten at de krever eksterne DLLer eller.no sånt, vil jeg gjerne ha rede på det også.

Lenke til kommentar
Videoannonse
Annonse

Janei, driver ikke spesielt og lærer, men jeg kn knapt kalle meg utlært heller. Har programmert ganske mye QBasic, Pascal og Delphi, tenker på å lære C/++ etterhvert.

Bare irriterende at jeg ikke får spillet til å gå like bra i Delphi 6 som i femmern.

Lenke til kommentar

Canvas.Lock før du begynner med å teikne, Canvas.Unlock etterpå. På denne måten vert ikkje det oppdatert før du skriv .Unlock, meiner eg å huske. Dette fikser som oftest refresh-feil, som lignar ein del på det du beskriv.

 

Om dette ikkje er problemet, kan det vera endringar i D6 som gjer at det er kantar når ein nyttar .DrawRect, men eg har ikkje nytta denne funksjonen så ofte sjølv, så les i hjelp om det... Hjelpen i Delphi er suveren! :smile:

Lenke til kommentar

Canvas.lock hindrer bare andre threads å tegne.

Tror jeg holder meg til Delphi 5 hvis jeg ikke finner noen løsning.

Kom forresten på en litt (vel, utrolig) jalla løsning, å ha to image-objekter oppå hverandre med samme grafikk, tegne på det underste og så kopiere til det øverste, da gjør det ingenting om et av dem flimrer ettersom det blir dekket av det andre.

Neiuff, det blir for ille :smile:

Lenke til kommentar

Quote:


GalFisk skrev (2002-02-26 09:20):

Canvas.lock hindrer bare andre threads å tegne.

Tror jeg holder meg til Delphi 5 hvis jeg ikke finner noen løsning.

Kom forresten på en litt (vel, utrolig) jalla løsning, å ha to image-objekter oppå hverandre med samme grafikk, tegne på det underste og så kopiere til det øverste, da gjør det ingenting om et av dem flimrer ettersom det blir dekket av det andre.

Neiuff, det blir for ille :smile:


 

Neida, ikkje slå det fra deg. Virtual canvas blir brukt ofte. Du treng berre å lage eit variabel av typen TCanvas, og teikna på dette. Kopier så over (CopyRect, om eg ikkje huske feil) det som er oppdatert på det Canvaset som vert vist. Du vil då sleppe all flimring, meine eg å huska. Har sjølv ikkje drevet mykje med teikning på Canvas, men dette her er verdt ett forsøk.

Lenke til kommentar

Thanx, det må jeg prøve.

Delphi lagrer faktisk bilder i en imagelist som tall!

(Sånn: 00,45,FF,3A,47)inni exe-fila, snakk om ineffektiv måte. Tror jeg skal generere hele driten i runtime...

Kanskje det er en ide å tegne rett på formen (hvis det finnes et form.canvas)?

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...