Mithilfe der SDL-ersetzen Sie die Farben mithilfe der SDL-Farbe Tasten

Arbeite ich in einem ein einfaches Lustiges Spiel, und die Verwendung von SDL als das display. Die Grafik für das Spiel ist ein Bild der Codepage 437, mit dem hintergrund schwarz und die Schrift weiß. Anstatt viele separate Bild-Dateien, sind bereits gefärbt, ich will eine image-Datei, und ersetzen Sie die Farben, wenn es in den Speicher geladen wird.

Den code teilen Sie die codepage in ein sprite-sheet funktioniert einwandfrei, aber beim Versuch zu drucken in Farbe, alles kommt in weiß. Ich hatte es die Arbeit der Vergangenheit, aber irgendwie brach ich den code, wenn Sie es von ändern der Farbe auf drucken, um die Farbe zu ändern auf laden. Hier ist der code zum laden des Bildes:

SDL_Surface *Screen,*Font[2];
SDL_Rect Character[256];

Uint8 ScreenY,ScreenX;
Uint16 PrintX,PrintY,ScreenSizeY,ScreenSizeX;
Uint32 Color[2];

void InitDisplay()
{
    if(SDL_Init(SDL_INIT_VIDEO) == -1) { printf("SDL Init failed\n"); return; }

    ScreenSizeY = 600;
    ScreenSizeX = 800;
    Screen = SDL_SetVideoMode(ScreenSizeX,ScreenSizeY,32,SDL_HWSURFACE | SDL_RESIZABLE);
    SDL_WM_SetCaption("Alpha",NULL);

    SDL_Surface *Load;
    Load = IMG_Load("resource/font.png");
    Font[0] = SDL_DisplayFormat(Load);
    SDL_FreeSurface(Load);

    Color[0] = SDL_MapRGB(Font[0]->format,255,255,255);
    Color[1] = SDL_MapRGB(Font[0]->format,255,0,0);

    Uint8 i,j,k = 0;

    PrintX = 0;
    PrintY = 0;

    for(i = 0; i < 16; i++) { for(j = 0; j < 16; j++)
    {
        Character[k].x = PrintX;
        Character[k].y = PrintY;
        Character[k].w = 8;
        Character[k].h = 12;
        k++;
        PrintX += 8;
    } PrintX = 0; PrintY += 12; }

    PrintX = 0;
    PrintY = 0;

    for(i = 1; i < 2; i++)
    {
        Font[i] = SDL_DisplayFormat(Font[0]);
        SDL_SetColorKey(Font[i],SDL_SRCCOLORKEY,Color[i]);
        SDL_FillRect(Font[i],&Font[i]->clip_rect,Color[i]);
        SDL_BlitSurface(Font[0],NULL,Font[i],NULL);
        SDL_SetColorKey(Font[0],0,Color[0]);
    }
}

Ist das problem mit der letzten for-Schleife oben. Ich kann nicht herausfinden, warum es nicht funktioniert. Jede Hilfe wird sehr geschätzt!

  • Ist "weiß" in Ihrer Schrift.png eigentlich voll RGB(255,255,255)?
  • Ja. Weiss ist FFFFFF, und schwarz ist 000000.
  • Ihre Letzte for-Schleife läuft einfach auf Schrift[1], war das deine Absicht?
  • Zu der Zeit, ja. Es wurde auf rot und schwarz zu der Zeit. Ich dachte this out, ich werde sehen, ob ich kann Graben Sie die Lösung.
Schreibe einen Kommentar