![]() |
problem mit picture bei image
hallo..ich hab folgendes problem:
ich lade von einer imageliste auf ein image verschiedene bitmaps(bilder). aber sie vermischen sich. as heißt das neu geladene bitmap legt sich einfach auf as alte darauf. > und das sieht scheiße aus. ich hab auch refresh bzw. repaint eingebaut.was muss ich da noch berücksichtigen? was kann ich da machen..irdendwie die bilder immer wieder löschen?? :gruebel: vielleicht wisst ihr weiter. Quellcode:
Delphi-Quellcode:
danke schon mal..
imagelist1.getbitmap(1,image2.picture.bitmap);
image2.Refresh; sleep(100); imagelist1.getbitmap(2,image2.picture.bitmap); image2.refresh; sleep(100); imagelist1.getbitmap(0,image2.picture.bitmap); [edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit] |
Re: problem mit picture bei image
Du hast bestimmt war mit Transparenz?
Lösche vorher einfach den Inhalt von image2 :zwinker: etwa in der Art:
Delphi-Quellcode:
oder so
image2.picture.bitmap.clear;
imagelist1.getbitmap(1,image2.picture.bitmap);
Delphi-Quellcode:
...
image2.picture.bitmap.pen.color := hintergrundfarbe;
image2.picture.bitmap.brush.color := hintergrundfarbe; image2.picture.bitmap.rectangle(...); imagelist1.getbitmap(1,image2.picture.bitmap); [add] Zitat:
|
Re: problem mit picture bei image
Es funktionieren beide lösungen nicht..
1. Zitat:
ich habs mal mit picture.destroy versucht > bringt aber auch nichts 2. Zitat:
das eine image soll praktisch auf den anderen image herrum laufen und sich dabei bewegen. also.. ??? :wall: was kann ich noch versuchen?? |
Re: problem mit picture bei image
Delphi-Quellcode:
Image1.Picture:=Nil;
|
Re: problem mit picture bei image
Zitat:
Wenn dann bitte
Delphi-Quellcode:
Image1.Picture.Free;
|
Re: problem mit picture bei image
also...
das mit Zitat:
und die andere variante mit Zitat:
also sieht man dann ein weißes viereck um meine figur.. ich zeig euch einfach mal die ganze procedure:
Delphi-Quellcode:
außerdem ist mein bewegungsablauf noch nicht so wie ich ihn haben möchte:
procedure TForm1.KeyFirst(var vorher: TWMKey);
begin case vorher.CharCode of VK_LEFT : begin KeyLeft; imagelist1.getbitmap(1,image2.picture.bitmap); image2.Refresh; sleep(100); image2.Picture.free; imagelist1.getbitmap(2,image2.picture.bitmap); image2.refresh; sleep(100); image2.picture.free; imagelist1.getbitmap(0,image2.picture.bitmap); end; VK_UP : KeyUp; VK_RIGHT : begin KeyRight; imagelist1.getbitmap(3,image2.picture.bitmap); image2.Refresh; sleep(100); image2.Picture:=nil; imagelist1.getbitmap(4,image2.picture.bitmap); image2.refresh; sleep(100); image2.picture:=nil; end; VK_DOWN : KeyDown; VK_ESCAPE: Close; end; imagelist1.getbitmap(0,image2.picture.bitmap); inherited; end; ich will , dass ,solange ich die pfeiltaste (links oder rechts) drücke, zwei bilder abwechselnt gezeigt werden.. und wenn ich nichts drücke soll das andere bild kommen (wie die figur steht); bis jetzt ist es so, (wenn ich das mit image2.picture:=nil; benutze) dass alle drei bilder immer abwechselnt erscheinen.. das bild wo die figur steht sieht man immer dazwischen wenn die figur läuft.. habt ihr vielleicht dazu ne idee? vielen dank für eure unterstützung :thumb: |
Re: problem mit picture bei image
So..
das Problem habe ich immer och nicht beheben können. allerdings habe ich die ganze sache etwas übersichtlicher gestaltet. Ich habe mich vorerst für die notlösung mit image1.picture:= nil entschieden. Aber zufrieden bin ich damit noch nicht.
Delphi-Quellcode:
also..ich hoffe ihr habt noch ein paar kreative Ideen für mich, wie ich mein problem lösen kann..
unit Spiel_01;
interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Image1: TImage; Label1: TLabel; Label2: TLabel; Image2: TImage; ImageList1: TImageList; procedure FormCreate(Sender: TObject); private { Private-Deklarationen } procedure show (NR:integer); public { Public-Deklarationen } procedure KeyFirst(var vorher: TWMKey);message CM_DIALOGKEY; procedure KeyLeft; procedure KeyUp; procedure KeyRight; procedure KeyDown; end; const s=8; var Form1: TForm1; implementation procedure TForm1.KeyFirst(var vorher: TWMKey); begin case vorher.CharCode of VK_LEFT : begin KeyLeft; show(4); KeyLeft; show(5); KeyLeft; show(6); KeyLeft; show(5); KeyLeft; show(4); end; VK_UP : KeyUp; VK_RIGHT : begin Keyright; show(1); Keyright; show(2); Keyright; show(3); Keyright; show(2); Keyright; show(1); end; VK_DOWN : KeyDown; VK_ESCAPE: Close; end; show(0); inherited; end; procedure TForm1.show(nr:integer); begin image2.picture:=nil; imagelist1.getbitmap(Nr,form1.image2.picture.bitmap); image2.Refresh; sleep(100); end; //Bild nach Links verschieben procedure TForm1.KeyLeft; begin Image2.Left := Image2.Left - s; If Image2.Left < image1.left then image2.left:= image2.left + s; end; //Bild nach Oben verschieben procedure TForm1.KeyUp; begin Image2.Top := Image2.Top - s; If Image2.top < image1.top then image2.top:= image2.top + s; end; //Bild nach Rechts verschieben procedure TForm1.KeyRight; begin Image2.Left := Image2.Left + s; If (Image2.Left+Image2.Width) > (image1.left + image1.Width) then image2.left:= image2.left - s; end; //Bild nach Unten verschieben procedure TForm1.KeyDown; begin Image2.Top := Image2.Top + s; If (Image2.top+Image2.height) > (image1.top + image1.height) then image2.top:= image2.top - s; end; {$R *.DFM} procedure TForm1.FormCreate(Sender: TObject); begin // double.buffered:=true; image2.top:=776; image2.left:=24; image28.Picture.Bitmap.TransparentColor:=clwhite; image29.Picture.Bitmap.TransparentColor:=clwhite; image30.Picture.Bitmap.TransparentColor:=clwhite; image31.Picture.Bitmap.TransparentColor:=clwhite; image32.Picture.Bitmap.TransparentColor:=clwhite; end; end. thank you der flo |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:45 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz