AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

tbitmap bewegen

Ein Thema von Julzn · begonnen am 10. Jul 2006 · letzter Beitrag vom 17. Jul 2006
Antwort Antwort
Seite 1 von 2  1 2      
Julzn

Registriert seit: 22. Jan 2006
Ort: Pfaffenhofen a.d. Glonn
27 Beiträge
 
#1

tbitmap bewegen

  Alt 10. Jul 2006, 14:38
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
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#2

Re: tbitmap bewegen

  Alt 10. Jul 2006, 14:57
Am besten erstmal in der Delphi-Hilfe nachschauen ...
Projekte:
- GitHub (Profil, zyantific)
- zYan Disassembler Engine ( Zydis Online, Zydis GitHub)
  Mit Zitat antworten Zitat
Muetze1
(Gast)

n/a Beiträge
 
#3

Re: tbitmap bewegen

  Alt 10. Jul 2006, 15:02
... oder einfach wieder Draw() nutzen anstatt BitBlt()
  Mit Zitat antworten Zitat
Julzn

Registriert seit: 22. Jan 2006
Ort: Pfaffenhofen a.d. Glonn
27 Beiträge
 
#4

Re: tbitmap bewegen

  Alt 10. Jul 2006, 15:08
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??
  Mit Zitat antworten Zitat
Julzn

Registriert seit: 22. Jan 2006
Ort: Pfaffenhofen a.d. Glonn
27 Beiträge
 
#5

Re: tbitmap bewegen

  Alt 17. Jul 2006, 20:33
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
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: tbitmap bewegen

  Alt 17. Jul 2006, 20:38
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.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Julzn

Registriert seit: 22. Jan 2006
Ort: Pfaffenhofen a.d. Glonn
27 Beiträge
 
#7

Re: tbitmap bewegen

  Alt 17. Jul 2006, 20:45
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??
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#8

Re: tbitmap bewegen

  Alt 17. Jul 2006, 21:09
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;
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Julzn

Registriert seit: 22. Jan 2006
Ort: Pfaffenhofen a.d. Glonn
27 Beiträge
 
#9

Re: tbitmap bewegen

  Alt 17. Jul 2006, 21:11
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??
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#10

Re: tbitmap bewegen

  Alt 17. Jul 2006, 21:16
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.
Michael Enßlin
Ich, der ich weiß, mir einzubilden, dass ich weiß, nichts zu wissen, weiß, dass ich nichts weiß.
Sokrates
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 16:00 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