AGB  ·  Datenschutz  ·  Impressum  







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

Hintergrundbild erstellen

Ein Thema von VkPenguin · begonnen am 13. Feb 2012 · letzter Beitrag vom 26. Feb 2012
Antwort Antwort
Popov
(Gast)

n/a Beiträge
 
#1

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 12:20
Ok, es gibt drei Bereiche. Der eine Bereich der repariert werden muß, der Bereich in dem etwas passiert, z. B. Ball taucht hier auf, und der gemeinsamer Bereich.

Den alten Rect-Bereich berechne ich nur, damit ich weiß wo etwas repariert werden muß. Da befindet sich noch das alte Ball Bild und das soll weg. Ich hab ja die Möglichkeit den kompletten Hintergrund zu zeichnen oder nur das zu übermalen was stört. Ich überzeichne also nur den Unterschied zum Original. Ich stelle somit im Tempbild das Originalbild wieder her. Nur mache ich es nicht in dem ich das komplette Originalbild in das TempBild zeichne, sondern ich flicke den Unterschied, ich mache also nur den Ball weg. Dazu muß ich zuerst wissen welchen Bereich ich reparieren muß. Das berechne ich aus den alten X/Y Koordinaten, plus Breite und Höhe des Ball-Bildes. Das Bild ist ja 72 Pixel breit und hoch, plus X und Y ergibt das einen bestimmten Rechteckbereich auf der Canvas. Das ist der Bereich der repariert werden muß.

Als nächstes berechne ich den Rect-Bereich in den gleich gezeichnet wird. Um den Ball zu zeichnen brauche ich den Rect-Bereich nicht. Das mache ich einfach mit Draw(X, Y, ...). Den Rect-Bereich brauche ich für was anderes.

Habe ich jetzt den alten Temp-Hintergrund-Bereich aus dem Originalbild repariert, in dem ich über CopyRect den den Teilbereich aus dem Originalbild auf das Tempbild kopiert habe, und dann den Ball mit Draw(X, Y, ...) auf das Tempbild gezeichnet habe, muß ich beide Bereiche auf die Canvas kopieren. Das mache ich in dem ich einen dritten Rect-Bereich aus den beiden berechne. Das ist der gemeinsame Rect-Bereich. Nun übertrage ich aus dem Tempbild den gemeinsamen Rect-Bereich auf die Canvas. Somit habe ich mit einem Kopiervorgang die alte Stelle repariert und die neue gezeichnet.

Beim nächsten Bild fängt alles von vorne an.

Du mußt dir das so vorstellen, das Tempbild entspricht zu 100% dem Bild auf der Canvas. Nur ich zeichne nicht immer das komplette Bild, was zeit kosten würde, sondern nur den nötigen Bereich.

Geändert von Popov (19. Feb 2012 um 12:23 Uhr)
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#2

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 12:54
Hm, ich dachte, ich hätte es jetzt endlich verstanden, dem ist aber offensichtlich nicht so. Das habe ich als Versuch gemacht:
Delphi-Quellcode:
 Recalt:=rect(Kidat[I].PosX,Kidat[I].PosY,Kidat[I].PosX+Kidat[I].Groesse,Kidat[I].PosY+Kidat[I].Groesse);
  Recneu:=rect(Kidat[I].PosX,Kidat[I].PosY+Kidat[I].Geschwindigkeit,
  Kidat[I].PosX+Kidat[I].Groesse,Kidat[I].PosY+Kidat[I].Groesse+Kidat[I].Geschwindigkeit);
  UnionRect(RecZusammen, RecAlt, RecNeu);
  Tmpbmp.Width:=Kidat[I].Groesse;
  Tmpbmp.Height:=Kidat[I].Groesse*2;
  TmpBmp.Canvas.CopyRect(RecZusammen, HintergrundPIC.Canvas, RecZusammen);
  TmpBmp.Canvas.Draw(0, 0, RaumschiffMobPIC[1]);
  Screen.ActiveForm.Canvas.Draw(Kidat[I].PosX,Kidat[I].PosY, TmpBmp);
Wenn ich Höhe und Breite der Bitmap nicht einstelle sehe ich garnichts, wenn doch wird das Raumschiff vor weißem Hintergrund gezeichnet, der nach und nach das komplette Hintergrundbild übermalt.. Was mach ich nur falsch?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#3

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 13:23
Tmpbmp ist die Kopie der Canvas, bzw. andersherum. Wieso änderst du die Größe beim Durchlauf.
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#4

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 13:52
meinst DuTmpbmp.Width:=Kidat[I].Groesse; Tmpbmp.Height:=Kidat[I].Groesse*2; ? Nunja, wie gesagt, wenn ich es nicht mache sehe ich garnichts, es scheint mir, als würde er dann einfach 0,0 als Größe wählen.
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#5

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 14:38
Wenn du über eine TempBitmap arbeitest, dann sollte sie die Größe der Ausgabe haben.
  Mit Zitat antworten Zitat
VkPenguin

Registriert seit: 23. Dez 2011
150 Beiträge
 
Delphi XE7 Architect
 
#6

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 14:41
Aber wenn ich es weglasse sind die Schiffe unsichbar.. Was ist denn an meinem Code falsch?
  Mit Zitat antworten Zitat
Popov
(Gast)

n/a Beiträge
 
#7

AW: Hintergrundbild erstellen

  Alt 19. Feb 2012, 15:13
Gucke mir heute abend an, muß jetzt was machen.
  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 22:51 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