Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » SDL Text Rendern

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.08.2007, 16:17 Uhr
~Walter
Gast


Also gut, ich habe hier noch ein Problem... wahrscheinlich ziemlich billig, aber ich habe kein Nerv mehr.. seit 5 Stunden grübele ich herum, komme aber nicht drauf.

Ich habe ein String der Länge 1200 (also 1200 Buchstaben).

Für diese erstelle ich jeweils eine Oberfläche:


Code:

/* Creating surfaces for every letter */
    for (i=0; i < stringlaenge; i++) {
        letter[0] = string[i];
        letter[1] = '\0';
        letter_surf[i] = TTF_RenderText_Solid(font, letter, white);
        letter_rect[i].w = letter_surf[i]->w;
        letter_rect[i].h = letter_surf[i]->h;
    }





Kann ich diesen Text auch wunderbar von rechts nach links scrollen lassen, hiermit


Code:
while(!keypressevent()){


for (i=0; i < stringlaenge; i++)
            SDL_FillRect(screen, &letter_rect[i], black);


        for (i=0; i < stringlaenge; i++) {
            
            if (i==0){
                xpos = first_xpos;
                     }
                    
            letter_rect[i].x = xpos;
            xpos +=weite;
            letter_rect[i].y = ypos;
            SDL_BlitSurface(letter_surf[i], NULL, screen, &letter_rect[i]);

        }
        
    first_xpos -= geschwindigkeit;
        SDL_Flip(screen);

  
    
    
}




Jetzt kommts aber:

Wenn mein String nun sagen wir mal 5000 Buchstaben enthalten soll, geht das nicht..
Das liegt an der xpos, die dann für ein int zu groß wird.

Nun meine Frage:

Kennt sich einer von euch aus, wie ich es anstellen soll, dass ich auch 5000 Buchstaben auf dem Bildschirm darstellen kann.

Und ja, es müssen die einzelnen Buchstaben sein, weil ich die Position der einzelnen Buchstaben zu jedem Zeitpunkt bestimmen muss.

Um eine Hilfe wäre ich sehr dankbar.

Gruß Walter
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.08.2007, 17:43 Uhr
(un)wissender
Niveauwart


Bei 5000 schon? Verstehe ich nicht. Selbst wenn jeder Buchstabe 100 Pixel breit ware, wären es nur 500000. Int kann 2 Milliarden. Ansonsten nimm int64.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.08.2007, 18:37 Uhr
FloSoft
Medialer Over-Flow
(Administrator)


ich würde eher sagen das sdl kann keine texturen größer sagen wir 2000x2000 erstellen. Du musst halt deinen Text aufteilen in mehrere kleinere Texturen
--
class God : public ChuckNorris { };
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
04.08.2007, 09:05 Uhr
(un)wissender
Niveauwart


Das klingt doch schon realistischer:
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
06.08.2007, 10:01 Uhr
~Walter
Gast


So..
Ich habe das nun so gemacht:


Code:

while(!keypressevent()){



for (i=0; i < 40+a; i++)
            SDL_FillRect(screen, &letter_rect[i], black);


        for (i=b; i < 40+a; i++) {
            
            if (i==b){
                xpos = first_x;
                     }
                    
            letter_rect[i].x = xpos;
            xpos +=weite;
            letter_rect[i].y = ypos;
            SDL_BlitSurface(letter_surf[i], NULL, screen, &letter_rect[i]);

        }
        
    first_x -= geschwindigkeit;
        SDL_Flip(screen);


    if(first_x<=-weite){
                    
                     first_x=0;
                     b++;
                  a++;
                     }







Ich lasse nur 40 Buchstaben "generieren" (so, dass es reicht, mein Bildschirm auszufüllen).
Wenn ein Buchstabe aus dem Bildschirm rausgeht, wird ein neuer Buchstabe drangehängt.
Ist vielleicht nicht die elleganteste Lösung, aber es tut.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (WinAPI, Konsole) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: