Ik probeer een spelletje te maken met Delphi
maar loop tegen een nogal moeilijk probleem aan.. Hier een voorbeeld om het probleem te laten zien en om te testen. Ik heb een Form1 met daarop een imgDisplay (type TImage) en op runtime laadt ik een plaatje in. In het voorbeeld is de code in de OnClick event gezet voor het gemak. Dan kan je klikken om te wisselen tussen het grote en het kleine plaatje. Als volgt:
Het probleem is, dat als er eerst een klein plaatje bijv. 320x240 pixels wordt ingeladen, en daarna een groter plaatje bijv 640x480 pixels dan wordt het niet goed weergegeven. Bij het grote plaatje is dan een grijze rand te zien, er wordt slechts een gedeelte ter grootte van het kleine plaatje getoond. Blijkbaar wordt de TCanvas van de imgDisplay niet aangepast ofzo
Als ik als eerste het grote plaatje inlaadt en daarna de kleine, dan gaat het wel goed. Ook als daarna het grote plaatje weer wordt ingeladen..
Wat kan ik hier aan doen? imgDisplay.Canvas.Refresh of imgDisplay.Canvas.Repaint helpt iig niet.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
| procedure TForm1.imgDisplayClick(Sender: TObject); const FileBig = '640x480.jpg'; FileSmall = '320x240.jpg'; var imgTemp : TImage; bmpBuffer : TBitmap; begin { toggle big and small image } if (strFilename = FileSmall) then strFilename := FileBig else strFilename := FileSmall; { create image and bitmap } imgTemp := TImage.Create(Application); bmpBuffer := TBitmap.Create; try { load BMP or JPG file to temporary TImage object } imgTemp.Picture.LoadFromFile(strFilename); { convert graphic from BMP or JPG to TBitmap graphic } bmpBuffer.Assign(imgTemp.Picture.Graphic); imgDisplay.Width := bmpBuffer.Width; imgDisplay.Height := bmpBuffer.Height; imgDisplay.Canvas.Draw(0, 0, bmpBuffer); finally imgTemp.Free; bmpBuffer.Free; end; end; |
Het probleem is, dat als er eerst een klein plaatje bijv. 320x240 pixels wordt ingeladen, en daarna een groter plaatje bijv 640x480 pixels dan wordt het niet goed weergegeven. Bij het grote plaatje is dan een grijze rand te zien, er wordt slechts een gedeelte ter grootte van het kleine plaatje getoond. Blijkbaar wordt de TCanvas van de imgDisplay niet aangepast ofzo
Als ik als eerste het grote plaatje inlaadt en daarna de kleine, dan gaat het wel goed. Ook als daarna het grote plaatje weer wordt ingeladen..
Wat kan ik hier aan doen? imgDisplay.Canvas.Refresh of imgDisplay.Canvas.Repaint helpt iig niet.
[ Voor 4% gewijzigd door BdR op 02-06-2004 11:00 ]
mijn web games -> Impossible Snake 2 :: Impossible Snake :: Snake Slider