AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi problem mit picture bei image
Thema durchsuchen
Ansicht
Themen-Optionen

problem mit picture bei image

Offene Frage von "flori-da"
Ein Thema von flori-da · begonnen am 12. Jan 2007 · letzter Beitrag vom 17. Jan 2007
Antwort Antwort
flori-da

Registriert seit: 10. Jan 2007
30 Beiträge
 
Delphi 3 Professional
 
#1

problem mit picture bei image

  Alt 12. Jan 2007, 12:23
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??
vielleicht wisst ihr weiter.

Quellcode:
Delphi-Quellcode:
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);
danke schon mal..

[edit=SirThornberry]Delphi-Tags gesetzt - Mfg, SirThornberry[/edit]
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.139 Beiträge
 
Delphi 12 Athens
 
#2

Re: problem mit picture bei image

  Alt 12. Jan 2007, 12:34
Du hast bestimmt war mit Transparenz?

Lösche vorher einfach den Inhalt von image2

etwa in der Art:
Delphi-Quellcode:
image2.picture.bitmap.clear;
imagelist1.getbitmap(1,image2.picture.bitmap);
oder so
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:
Quellcode:
ach ja, schau dir doch bitte mal die [code]-Tags an
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
flori-da

Registriert seit: 10. Jan 2007
30 Beiträge
 
Delphi 3 Professional
 
#3

Re: problem mit picture bei image

  Alt 12. Jan 2007, 16:14
Es funktionieren beide lösungen nicht..

1.
Zitat:
image2.picture.bitmap.clear;
delphi sagt da bei mir das clear ein undefinierter bezeichner ist..
ich habs mal mit picture.destroy versucht > bringt aber auch nichts

2.
Zitat:
image2.picture.bitmap.pen.color := hintergrundfarbe;
image2.picture.bitmap.brush.color := hintergrundfarbe;
image2.picture.bitmap.rectangle(...);
imagelist1.getbitmap(1,image2.picture.bitmap);
das geht auch nicht, weil ich hinter dem image ein weiteres image habe..
das eine image soll praktisch auf den anderen image herrum laufen und sich dabei bewegen.
also.. ???
was kann ich noch versuchen??
  Mit Zitat antworten Zitat
Blackheart

Registriert seit: 4. Mai 2005
846 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: problem mit picture bei image

  Alt 12. Jan 2007, 16:57
Image1.Picture:=Nil;
Blackheart
  Mit Zitat antworten Zitat
MrKnogge

Registriert seit: 9. Jun 2003
Ort: Pforzheim
2.458 Beiträge
 
Delphi 2007 Professional
 
#5

Re: problem mit picture bei image

  Alt 12. Jan 2007, 17:03
Zitat von Blackheart:
Image1.Picture:=Nil;
Und das Opject vom Typ TPicture wäre dann weiterhin in meinem Speicher
Wenn dann bitte Image1.Picture.Free;
Christian Bootz
Einstein ist tot, Newton ist tot,
und mir ist auch schon ganz schlecht...
  Mit Zitat antworten Zitat
flori-da

Registriert seit: 10. Jan 2007
30 Beiträge
 
Delphi 3 Professional
 
#6

Re: problem mit picture bei image

  Alt 12. Jan 2007, 17:31
also...

das mit
Zitat:
Image1.Picture.Free;
funktioniert nicht.da bekomme ich eine fehlermeldung sobald ich die procedur starte.

und die andere variante mit
Zitat:
Image1.Picture:=Nil;
läuft..ABER mit weißen hintergrund..und das ist das was ich gerade nicht wollte.
also sieht man dann ein weißes viereck um meine figur..
ich zeig euch einfach mal die ganze procedure:

Delphi-Quellcode:
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;
außerdem ist mein bewegungsablauf noch nicht so wie ich ihn haben möchte:
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
  Mit Zitat antworten Zitat
flori-da

Registriert seit: 10. Jan 2007
30 Beiträge
 
Delphi 3 Professional
 
#7

Re: problem mit picture bei image

  Alt 17. Jan 2007, 16:36
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:
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.
also..ich hoffe ihr habt noch ein paar kreative Ideen für mich, wie ich mein problem lösen kann..
thank you
der flo
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz