Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi tbitmap bewegen (https://www.delphipraxis.net/72980-tbitmap-bewegen.html)

Julzn 10. Jul 2006 13:38


tbitmap bewegen
 
tag leutz,
alos ich hab jetzt schon ziemlich lang gesucht un auch sachen gefunden...
aber bei mir funzt des alles ned so ganz, oder ich bin einfach zu blöd dafür.

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  a:=150;
  b:=150;
  bmp[0]:= tbitmap.Create;
  bmp[0].LoadFromFile('b_rot.bmp');
  bmp[0].TransparentColor:=clblue;
  bmp[0].Transparent:=true;
  bmp[0].Width:=50;
  bmp[0].Height:=50;
  canvas.Draw(150,150,bmp[0]);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  a:=a+5;
  b:=b+10;
  BitBlt(pb.Canvas.Handle,a,b,bmp[0].width,bmp[0].Height,bmp[0].Canvas.Handle,a,b,SrcCopy);
end;
also wenn ich den ersten button drück malt er was er soll, aber wenn ich dann den andren drück passiert gar nix. könnt ihr vllt mal erklären was da bei bitblt so alles in den klammern steht. was zb die werte wo jetzt a und b steht sind.

thx

Zacherl 10. Jul 2006 13:57

Re: tbitmap bewegen
 
Am besten erstmal in der Delphi-Hilfe nachschauen ...

Muetze1 10. Jul 2006 14:02

Re: tbitmap bewegen
 
... oder einfach wieder Draw() nutzen anstatt BitBlt()

Julzn 10. Jul 2006 14:08

Re: tbitmap bewegen
 
ich will ja ber dass es verschoben wird. wenn ich wieder draw hernehm
dann erstellt er ja n neues un des alte bleibt da. dann müsstet ihr mir noch sagen wie ich des alte wieder lösch. mit free??

Julzn 17. Jul 2006 19:33

Re: tbitmap bewegen
 
so, habs jetzt n paar tage ruhen lassen uns dann heute nochmal probiert.
also des verschieben geht ja, nur is es kein richtiges verschiebn,
sonder er kopiert des image ja nur an ne andre stelle.
aber eigentlich soll der des verschieben...
was muss ich dann noch machen, dass der des source image löscht,übermalt,
was auch immer. hauptsache es is dann nur noch 1 mal da.

bin dankbar für jede antwort.

greetz juli

Khabarakh 17. Jul 2006 19:38

Re: tbitmap bewegen
 
Zitat:

Zitat von Julzn
was muss ich dann noch machen, dass der des source image löscht,übermalt,
was auch immer.

Du hast die Lösung doch schon selbst gefunden ;) . Leere die Canvas der Paintbox per Delphi-Referenz durchsuchenFillRect, bevor du das Bitmap auf sie kopierst.

Julzn 17. Jul 2006 19:45

Re: tbitmap bewegen
 
ok, wenn ich jetzt nich ends der noob in delphi wär
könnt ich des vllt hinkriegn...

was muss ich in die klammer schreiben?? die hilfe hilft mir nicht besonders viel

ok, habs dann auch rausgefunden, THX

jetzt hab ich aber n image als hintergrundbild, un des löscht der ja dann auch.
wär gut wenn sich des vermeiden lassen könnte.
geht des??

ichbins 17. Jul 2006 20:09

Re: tbitmap bewegen
 
Du könntest einen kompletten Paint-Algorithmus schreiben so wie bei "professionellen" und auch 3-D-Spielen:

Für jede Änderung einfach alles neu zeichnen, d.h.

Delphi-Quellcode:
procedure paint;
begin
  Hintergrund ablegen;
  Image ablegen;
end;

Julzn 17. Jul 2006 20:11

Re: tbitmap bewegen
 
is des nich viel zu aufwändig?? also von der resourcen her??

mir is da grad aufgefallen, dass ich auch einfach statt bitblt herzunehmen,
die canvas leeren könnt un dann alles einfach an ner neuen stelle zeichne...

is doch theoretisch des gleiche. oder??

ichbins 17. Jul 2006 20:16

Re: tbitmap bewegen
 
Wenn du es mit bitblt machst nicht.
Die Paint Procedure von der VCL macht es ja so und so, wenn du eine neue Komponente drüberschiebst oder so.

Und da auch bei allen modernen Spielen diese Methode gewählt wird...


Du darfst natürlich nicht jedes Mal das Bild neu von der Festplatte laden ;)
Einfach in der form.create in eine bitmap-Variable laden und immer bei Gebrauch verwenden ;)


//edit:

Du könntest natürlich auch an der Stelle, wo das Bild zuerst war, mit Bitblt irgendwie (sie Delphihilfe) den entsprechenden Teil des Hintergrundbildes drüberkopieren und dann das Bitmap an der neuen Position ablegen, aber wenn du was etwas komplexeres machst (mehrere Bitmaps ;)), läuft dir das alles ziemlich schnell aus den Rudern.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:50 Uhr.
Seite 1 von 2  1 2      

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