AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren

Sprites

Ein Thema von blablab · begonnen am 5. Dez 2006 · letzter Beitrag vom 5. Dez 2006
Antwort Antwort
blablab

Registriert seit: 3. Jan 2006
507 Beiträge
 
Delphi 7 Enterprise
 
#1

Sprites

  Alt 5. Dez 2006, 13:54
Hallo!

Ich hab n TImage und würde gerne mit der Maus ein Kreis "aufziehen" wie beim Paint. Das Problem ist nur, dass er den Kreis bei OnMouseMove aktualisieren muss und der Kreis darf nicht permanent auf dem TImage gezeichnet sein, sondern den muss ich ja dann wieder weglöschen.

Weiß jemand, wie man sowas macht?
Ich hatte mir überlegt noch ein zweites TImage auf das andere zu legen und darauf den temporären Kreis zu zeichnen, aber ich denke das ist keine so gute und schnelle lösung...

Vielen Dank schonmal!

Simon
  Mit Zitat antworten Zitat
Benutzerbild von DGL-luke
DGL-luke

Registriert seit: 1. Apr 2005
Ort: Bad Tölz
4.149 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Sprites

  Alt 5. Dez 2006, 13:56
Das kannst du z.B. machen, indem du per XOR zeichnest. das Bild wird dann dort, wo du den Kreis zeichnest, invertiert. beim nächsten MouseMove zeichnest du dann noch einmal per XOR über den alten Kreis drüber - schwupps, weg ist er.

Ansonsten kannst du natürlich auch das Bild einfach komplett neuzeichnen.
Lukas Erlacher
Suche Grafiktablett. Spenden/Gebrauchtangebote willkommen.
Gotteskrieger gesucht!
For it is the chief characteristic of the religion of science that it works. - Isaac Asimov, Foundation I, Buch 1
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Sprites

  Alt 5. Dez 2006, 13:59
schnapp dir ne Bitmap Variable, die du vor dem Zeichnen mit dem aktuellen Bild füllst, jetzt bevor du den neuen Kreis zeichnest lädst du deine gespeicherte Bitmap wieder auf das Image und schon ist der alte Kreis weg und der neue ist da.

Ich hoffe, dass du das gemeint hast.

Die Variable muss natürlich global oder Teil deiner Klasse sein, die muss ja über die OnMouseMove Funktion hinaus gültig bleiben!
Jan
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
507 Beiträge
 
Delphi 7 Enterprise
 
#4

Re: Sprites

  Alt 5. Dez 2006, 14:01
und wie kann ich die bitmap-variable mit dem alten bild füllen?
Ist das die funktion bitblt (und wenn ja, wie funktioniert das?)?
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Sprites

  Alt 5. Dez 2006, 14:08
ich glaube du kannst über .Picture die Bitmap des Images anzusprechen.

Also müsste sowas wie:

Delphi-Quellcode:
var bmp: TBitmap;

bmp := TBitmap.create;


//Bitmap in Image laden
Image1.Picture.Bitmap.assign(bmp);

//Image in Bitmap laden
bmp.assign(Image1.Picture.Bitmap);
bin mir gerade nicht sicher ob assign oder einfach ein := besser ist, sprich:

bmp := Image1.Picture.Bitmap;
Jan
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
507 Beiträge
 
Delphi 7 Enterprise
 
#6

Re: Sprites

  Alt 5. Dez 2006, 14:14
Ja aber dann muss ich ja immer das ganze bild zwischenspeichern. Und eigentlich würde es ja reichen, wenn ich nur das stück zwischenspeicher, auf dem ich vorhabe zu malen, oder?
Soviel ich weiß könnte ich an der Stelle dann mit draw das stück wieder reinmalen.
Die frage wäre dann wie ich es zwischenspeicher.
Oder ob es noch einen anderen lösungsweg gibt...
  Mit Zitat antworten Zitat
Eichhoernchen

Registriert seit: 22. Apr 2004
Ort: Hagen
322 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Sprites

  Alt 5. Dez 2006, 15:11
ist doch nicht schlimm, dass du es ganz neu schreibst, das geht so schnell, das merkst du gar nicht^^

Naja, kannst dir natürlich auch nur das Stück neu zeichnen, ich glaube es gibt sowas wie TGraphics, da kann man so Bildstücke glaub ich drin ablegen!
Jan
  Mit Zitat antworten Zitat
blablab

Registriert seit: 3. Jan 2006
507 Beiträge
 
Delphi 7 Enterprise
 
#8

Re: Sprites

  Alt 5. Dez 2006, 16:17
Es geht ja darum, dass er es in OnMouseMove neu zeichnet und das Bild so groß wie der Bildschirm sein kann. Und es sollte halt trotzdem flüssig laufen.
Ich kann mir net vorstellen, dass das dann noch so flüssig läuft.
Werds mal ausprobieren...
  Mit Zitat antworten Zitat
Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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 17:48 Uhr.
Powered by vBulletin® Copyright ©2000 - 2022, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2021 by Daniel R. Wolf