AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Benutzerdefinierte Spritefarben
Thema durchsuchen
Ansicht
Themen-Optionen

Benutzerdefinierte Spritefarben

Ein Thema von Neutral General · begonnen am 18. Jun 2007 · letzter Beitrag vom 19. Jun 2007
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 15:43
Hi,

Wusste leider keinen besseren Namen für meine Frage. Ich würde gerne Sprites haben die pratkisch von Natur aus komplett weiß sind (also schon mit schwarzen Konturen) und der Benutzer soll die Farben für einzelne Fläschen des Sprites selbst auswählen dürfen (z.B. aus einem Colordialog oder so). Wie macht man sowas? Ich würde dann die Andorra Engine benutzen.

Gruß
Neutral General
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 16:03
Sind diese zu füllenden Flächen einfarbig oder Gradienten? Je nachdem musst du diese Farben im Original-Bitmap mit einer/m einzigartigen Farbe bzw. Farbbereich füllen, die/den du dann im Spiel einfach durch die wirkliche Farbe ersetzen kannst.
Ein Beispiel ist immer gut bei solchen Fragen . Ich gebe mal ein Gegenbeispiel: Das Hemd des Clonks ist eigentlich ein clFuchsia-Verlauf (die berühmtberüchtigte Farbe ) und wird zur Laufzeit dann durch die vom Spieler gewählte Farbe ersetzt (hier hellblau).
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#3

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 16:07
Mhh ja also das Prinzip ist mir schon so klar aber wie mach ich das in der Praxis? Also früher sind meine Versuche auf Sprites zu malen immer fehlgeschlagen...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 16:22
Da du meinem Beispiel nicht widersprochen hast, werde ich dieses weiterführen: Das Mittel zum Ziel heißt wie immer in der Informatik Mathematik. Wir suchen ja nichts Anderes als eine Abbildung, eine Funktion, die einen (RGB-)Vektor auf einen anderen abbildet.
Da ich gerade festgestellt habe, dass die Clonkvorlage in blau ist , wollen wir also den Bereich #0000ff...#000000 auf #rrggbb...#000000 abbilden. Soll heißen, der Benutzer wählt eine Farbe c, der Blauton im Originalbild gibt dann vor, in welcher Helligkeit diese Farbe eingefügt wird (256 mögliche Schattierungen). Die Farbe des Pixels mit dem originalen Blauwert x ist dann c * x / 255.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#5

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 16:33
Mhh jaaaa aber ich meine wie ich das praktisch programmiere.. Die Theorie bekomm ich denke ich mal auch hin aber wie färbe ich eine Fläche eines Sprites?
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

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

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 16:50
Unter DirectX holst du dir die Surface der Textur, von dieser kannst du dann einen Speicherbereich sperren lassen und beschreiben. Wie genau das zu programmieren ist, hängt natürlich von der API ab.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#7

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 16:51
Ja wie gesagt ich wollte Andorra2D benutzen...
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#8

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 17:26
Wie wäre es mit...
Image.Color := clWasAuchImmer;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 17:38
Grml...

Schau(t) mal im Anhang.. Bei dem "Sprite" soll der Benutzer z.B. die Farbe der Hose bestimmen können und die Farbe des Pullovers und die Farbe des Motivs und die Hautfarbe,etc... @Igel.. Kann man in dem einen Spiel von dir nicht auch sowas einstellen?

Gruß
Neutral General
Miniaturansicht angehängter Grafiken
sprite_929.jpg  
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."
  Mit Zitat antworten Zitat
Benutzerbild von igel457
igel457

Registriert seit: 31. Aug 2005
1.622 Beiträge
 
FreePascal / Lazarus
 
#10

Re: Benutzerdefinierte Spritefarben

  Alt 18. Jun 2007, 17:43
Ja, das kann man. Du musst die Sprites halt "vorrendern". Ich habe das so gemacht:

Delphi-Quellcode:
//Produces the Image (with hair color etc...)
procedure TCharacter.ProduceImage;
var x,y:integer;
    abmp:TBitmap;
    col,ncol:TColor;
    r,g,b:byte;

    //Makes a color daker
    function DarkColor(acolor:TColor;value:integer):TColor;
    var r,g,b:byte;
    begin
      r := cut(getrvalue(acolor)-value);
      g := cut(getgvalue(acolor)-value);
      b := cut(getbvalue(acolor)-value);
      result := rgb(r,g,b);
    end;
begin

  //Create Bitmap
  abmp := TBitmap.Create;
  abmp.PixelFormat := pf24Bit;

  //Get the Oringinals Bitmap (TFigurImage)
  original.GetAsBitmap(abmp);

  { TODO -oAll -cCode : Scanline }
  for x := 0 to abmp.Width-1 do
  begin
    for y := 0 to abmp.Height-1 do
    begin
      col := abmp.Canvas.Pixels[x,y];
      r := getrvalue(col);
      g := getgvalue(col);
      b := getbvalue(col);
      //Skin color. In the originals Bitmap the skin colors RGB Values are all the same --> gray/white
      if (r=g) and (r=b) then
      begin
        ncol := darkcolor(skincolor,255-r);
        abmp.Canvas.Pixels[x,y] := ncol;
      end;

      //Cloths color. In the originals Bitmap the clothes color is red (GB are not set)
      if (g=0) and (b=0) then
      begin
        ncol := darkcolor(clothescolor,255-r);
        abmp.Canvas.Pixels[x,y] := ncol;
      end;

      //Hair color. In the originals Bitmap the clothes color is yellow (B is not set) R and B is the same.
      if (b=0) and (r=g) then
      begin
        ncol := darkcolor(haircolor,255-r);
        abmp.Canvas.Pixels[x,y] := ncol;
      end;
    end;
  end;

  //Assing the new bitmap to the buffer
  figurimage.Assign(abmp);

  figurimage.transparentcolor := clFuchsia;
  figurimage.transparent := true;


  //Free all things
  abmp.Free;
end;
Andreas
"Sollen sich auch alle schämen, die gedankenlos sich der Wunder der Wissenschaft und Technik bedienen, und nicht mehr davon geistig erfasst haben als die Kuh von der Botanik der Pflanzen, die sie mit Wohlbehagen frisst." - Albert Einstein
  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 08:37 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