AGB  ·  Datenschutz  ·  Impressum  







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

Bereich von Image in anderes Image kopieren

Ein Thema von xZise · begonnen am 30. Mär 2007 · letzter Beitrag vom 3. Apr 2007
Antwort Antwort
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#1

Bereich von Image in anderes Image kopieren

  Alt 30. Mär 2007, 22:42
Ich möchte ein Teil eines Images in ein anderes Image kopieren.
Das Quellimage ist eine Aneinanderreihung von verschiedenen Wandtypen
Variablen:
  • Sourceimage = iWalls
  • Destimage = bMap
  • Teil = i
  • Feldbreite = FIELD_WIDTH
(i ist der Index des Teiles. Und ein Tei ist 48 x 48 px groß)
Ich habe es so programmiert:
bMap.Canvas.CopyRect(Rect(raster.x * FIELD_WIDTH, raster.y * FIELD_WIDTH, (raster.x + 1) * FIELD_WIDTH, (raster.y + 1) * FIELD_WIDTH), iWalls.Canvas, Rect(i * 48, 0, (i + 1) * 48, 48)); Nun nimmt er aber immer das 1. Bild und auch ist es nicht transparent.
Wie kann man das beheben?

PS: i ist korrekt!
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Bereich von Image in anderes Image kopieren

  Alt 1. Apr 2007, 12:27
Ich bin ratlos... Ich habe es mal getestet direkt auf ein Image zu malen, und da funktionierts einwandfrei... Aber ich finde den Fehler nirgends
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#3

Re: Bereich von Image in anderes Image kopieren

  Alt 3. Apr 2007, 00:09
Sorry, aber irgendwie scheint niemand sich hierfür zu interessieren?!

Ich habe auch weiter getestet, und habe festgestellt, dass es das 1. Image ist (100%). Genau richtig gesetzt und auch nichts übersehen...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: Bereich von Image in anderes Image kopieren

  Alt 3. Apr 2007, 07:31
Guten Morgen Fabian,

überprüfe mal deine Einstellung von bMap.Canvas.CopyMode, erkläre die Bedeutung von "raster" und reduziere die Parameter Right und Bottom von Rect() um jewils einen Pixel.

Grüße vom marabu
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Bereich von Image in anderes Image kopieren

  Alt 3. Apr 2007, 10:25
Zitat von marabu:
Guten Morgen Fabian,

überprüfe mal deine Einstellung von bMap.Canvas.CopyMode
Welchen Wert sollte es haben?

Zitat von marabu:
erkläre die Bedeutung von "raster"
raster ist vom Typ "TPoint" und gibt das Feld auf der Karte an (also nicht die Pixel sondern die Feldnummer)

Zitat von marabu:
und reduziere die Parameter Right und Bottom von Rect() um jewils einen Pixel.
Ich habe es versucht oben zu beschreiben (#3): Die Position des Steins ist korrekt. Nur eben nicht der Stein...
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: Bereich von Image in anderes Image kopieren

  Alt 3. Apr 2007, 17:30
Hallo Fabian,

welchen CopyMode du verwenden musst kann ich nicht sagen, da ich deine Anforderung nicht verstehe. Im Zweifelsfall probierst du sie einfach aus.

"Raster" verstehe ich jetzt so, dass die Koordinaten X und Y die Spalte und die Zeile einer Kachel in einem Grid angeben.

Wenn eine Kachel quadratisch ist und eine Kantenlänge von 48 Pixeln hat, dann beginnt die erste Kachel bei X = 0 und die zweite bei X = 48, also endet die erste bei X = 47. Du lässt sie bei 48 enden, was ein Pixel zu viel ist. Es fällt dir nur nicht auf, weil alle überflüssigen Pixel verdeckt werden, wenn du links oben mit dem Malen beginnst. Nur ein übermalter Rand rechts und unten bleibt erhalten. Verringerst du den dritten Parameter (Right) von Rect(), dann stimmt alles.

Freundliche Grüße
  Mit Zitat antworten Zitat
Benutzerbild von xZise
xZise

Registriert seit: 3. Mär 2006
Ort: Waldbronn
4.303 Beiträge
 
Delphi 2009 Professional
 
#7

Re: Bereich von Image in anderes Image kopieren

  Alt 3. Apr 2007, 23:25
Danke marabu
Aber irgendwie ist das noch nicht alles...
Vorweg: Eine Prozedur die im "Move" ausgeführt wird, hat immer das gleiche Image gemalt und so entstand der Effekt. Aber das hat sich erledigt.

Zitat von marabu:
welchen CopyMode du verwenden musst kann ich nicht sagen, da ich deine Anforderung nicht verstehe. Im Zweifelsfall probierst du sie einfach aus.
cmSrcCopy tuts

Zitat von marabu:
"Raster" verstehe ich jetzt so, dass die Koordinaten X und Y die Spalte und die Zeile einer Kachel in einem Grid angeben.
Korrekt

Zitat von marabu:
Wenn eine Kachel quadratisch ist und eine Kantenlänge von 48 Pixeln hat, dann beginnt die erste Kachel bei X = 0 und die zweite bei X = 48, also endet die erste bei X = 47. Du lässt sie bei 48 enden, was ein Pixel zu viel ist. Es fällt dir nur nicht auf, weil alle überflüssigen Pixel verdeckt werden, wenn du links oben mit dem Malen beginnst. Nur ein übermalter Rand rechts und unten bleibt erhalten. Verringerst du den dritten Parameter (Right) von Rect(), dann stimmt alles.
Danke aber das wars nicht ^^

Jetzt gibts ein anderes Problem: Die Quelldaten sind in den Massen 48 x 48, aber die Kartenzellen sind nur 28 x 28 px groß... An sich kein Problem, außer das es so unschöne grafische artefakte gibt.

Im Anhang siehts man Zudem müsste ich transparenz kopieren... Geht das auch irgendwie?
Angehängte Grafiken
 
Fabian
Eigentlich hat MS Windows ab Vista den Hang zur Selbstzerstörung abgewöhnt – mkinzler
  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 20:56 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