Text Function funzt nicht



  • Hi,
    ich hab den Fehler mit:

    SDL_CloseFont
    

    Ans untere Ende der Function getan,
    doch der Fehler, liegt wie schon beschrieben beim
    SDL_Rect.

    Wäre für hilfe sehr dankbar,
    vielen dank im vorraus.

    cu max



  • Hi,
    @TGGC ich sehe gerade auf deiner Side das du mal mit Darkbasic
    gearbeitet hast, wie war dein Name im Forum?(Nur aus interesse?)

    cu max



  • Master_Max schrieb:

    Hi,
    @TGGC ich sehe gerade auf deiner Side das du mal mit Darkbasic
    gearbeitet hast, wie war dein Name im Forum?(Nur aus interesse?)

    cu max

    er hatte 2

    "D.G.A.U.D.A.E.C." - Der Größte Angeber Und Das Arschloch Einer Community

    "TGGC - Gay is not enough" 😉



  • 🙂
    Kommst du auch aus dem DB Forum?
    cu max



  • Jo bin doch Jarek und muss meinen verwichsten feind TGGC ja mal feuer unterm Arsch machen, damit alle seine dunkle vergangenheit kennen. 🙂



  • SDL_Rect:

    typedef struct {
    Sint16 x, y;
    Uint16 w, h;
    } SDL_Rect;

    du musst aber SDL_Color verwenden:

    typedef struct {
    Uint8 r;
    Uint8 g;
    Uint8 b;
    Uint8 unused;
    } SDL_Color;

    cu



  • Hi,
    aha!Danke.
    cu max



  • @Master_Max:
    Du hast keine konkrete Frage gestellt, also was soll man antworten?

    Im DB Forum hiess ich auch TGGC, ich hatte noch nie ein anderes Pseudonym.

    BTW: Ich habe keinen Streit. Genies haben keinen Streit nötig.

    Bye, TGGC



  • Hi,
    meine Frage war wo der Fehler liegt, ich hatte ihn ja wie vermutet
    bei SDL_Rect, also nun SDL_Color.
    Meine Frage hätte aber doch eigentlich für ein "Genie" wie dich
    ersichtlich sein sollen. 😃

    PS:Habs noch nicht hinbekommen, muss mich ersmal mit einer Button erkennung
    beschäftigen.Vielen dank.

    cu max



  • sdlrect hat kein b schrieb:

    SDL_Rect:

    typedef struct {
    Sint16 x, y;
    Uint16 w, h;
    } SDL_Rect;

    du musst aber SDL_Color verwenden:

    typedef struct {
    Uint8 r;
    Uint8 g;
    Uint8 b;
    Uint8 unused;
    } SDL_Color;

    cu

    Tja. Das hätte ich Dir ja auch sagen können (auf mich selber sauer sei)...

    Mich hatte es auch gewundert, was ein Rectangle mit einer Farbeinstellung zu tun hat, aber da ich NULL Peil von SDL hab' hab' ich's mal lieber gelassen... 🙄



  • Master_Max schrieb:

    meine Frage war wo der Fehler liegt

    Warum hast du dann nicht einfach danach gefragt sondern behauptet "das ist die Fehlerquelle:".



  • Master_Max schrieb:

    TextSurface = TTF_RenderText_Solid(pFont, "Alles wird gut",&color);
    [/cpp]
    Vielen dank im vorraus.
    cu max

    das &color stimmt nicht, es sollte nur color heissen
    TTF_RenderText_Solid(pFont, "Alles wird besser", color);

    cu



  • Hi,
    vielen dank.
    Ich hatte mal wieder Zeit mich damit zu beschäftigen komme aber immer
    noch nicht auf den grünen Zweig. Ich hab bei Google und in vielen
    Foren gesucht finde aber kein Tutorial. Nun ja, ich habe immer noch einen
    Fehler und ich denke alles was ihr gesagt habt berücksichtigt zu haben.
    Naja, vielleicht könnt ihr mir ja helfen:
    Ein Bsp:

    #include <SDL.h>
    #include "SDL_ttf.h"
    
    //Präprozessor befehle die leider nötig sind damit SDL läuft.
    #ifdef _WIN32
    #undef main
    #endif
    
    int main(){
    	SDL_Init(SDL_INIT_VIDEO);
    	SDL_Surface *screen;
    	screen=SDL_SetVideoMode(1024,768,32,0);
        TTF_Init();
    	SDL_Surface *TextSurface;
    
    TTF_Font *pFont;
    
    typedef struct color{
    Uint8 r;
    Uint8 g;                                                            
    Uint8 b;
    Uint8 unused;
    }SDL_Color;
    
    pFont = TTF_OpenFont("Arial.ttf",12);
    TTF_CloseFont(pFont);
    TextSurface = TTF_RenderText_Solid(pFont,"Alles wird besser",&color); //es 
    //ist egal ob ich &color oder nur color schreibe,
    // ich erhalte bei beiden //den //Fehler.                                                                                                                
    
    SDL_BlitSurface(TextSurface,NULL,screen,0);
    SDL_UpdateRects(screen,1,0); 
    
    SDL_FreeSurface(TextSurface);
    
    TTF_Quit();
    
    	SDL_Delay(3000);
    	SDL_Quit();
    	return 0;
    }
    

    **
    //--------------------Konfiguration: TTF_Text - Win32 Debug--------------------
    Kompilierung läuft...
    codeTTF_Text.cpp
    C:\Programme\Microsoft Visual Studio\MyProjects\TTF_Text\codeTTF_Text.cpp(28) : error C2275: "color" : Ungültige Verwendung dieses Typs als Ausdruck
    C:\Programme\Microsoft Visual Studio\MyProjects\TTF_Text\codeTTF_Text.cpp(19) : Siehe Deklaration von 'color'
    Fehler beim Ausführen von cl.exe.

    TTF_Text.exe - 1 Fehler, 0 Warnung(en)
    **

    Ich habe doch color richtig definiert oder?
    Ich würde mich sehr über hilfe freuen.

    PS:Wegen den //´s komisch, aber die eingabe spinnt wenn ich sie schreibe,
    rücken die wörter der letzten zeile immer nach vorne.

    cu max



  • Solltest Du dann nicht SDL_Color statt color verwenden?!?



  • - du brauchst sdl_color nicht neu zu definieren, das gibts schon:) nur musst du noch eins mit deinen beliebigen werten füllen...
    - dann musst du ttf_closefont() erst nachdem du die schrift nicht mehr benötigst (ende des programms?) aufrufen.
    - es ist nicht egal ob du color oder &color übergibst.
    - mit "SDL_BlitSurface(TextSurface,NULL,screen,NULL);" blittest du dein textsurface in die linke obere ecke des bildschirms. besser wäre es, als letzten parameter ein SDL_Rect zu übergeben, in dem steht, wohin du die Schrift haben willst.

    #include <SDL.h> 
    #include "SDL_ttf.h" 
    
    //Präprozessor befehle die leider nötig sind damit SDL läuft. 
    #ifdef _WIN32 
    #undef main 
    #endif 
    
    int main(){ 
        SDL_Init(SDL_INIT_VIDEO); 
        SDL_Surface *screen; 
        screen=SDL_SetVideoMode(1024,768,32,0); 
        TTF_Init(); 
        SDL_Surface *TextSurface; 
    
    TTF_Font *pFont; 
    
    pFont = TTF_OpenFont("Arial.ttf",12); 
    SDL_Color color;
    color.r = color.g = color.b = 255; //schriftfarbe weiss
    
    TextSurface = TTF_RenderText_Solid(pFont,"Alles wird besser",color);                                                                                                          
    SDL_BlitSurface(TextSurface,NULL,screen,NULL); 
    SDL_UpdateRects(screen,1,0);  
    
    SDL_FreeSurface(TextSurface); 
    
    TTF_CloseFont(pFont);
    TTF_Quit(); 
    
        SDL_Delay(3000); 
        SDL_Quit(); 
        return 0; 
    }
    

    ich habe jetzt nicht alles ganz genau durchgesehen und auch nicht getestet, aber eigentlich sollte es so gehen.



  • Hi,
    vielen dank.
    Du bist wieder ein beweis das die unregistrierten sehr gut sind.
    @TGGC und nicht immer "Trollen"
    Nochmals danke.
    Sorry, aber ich blick nie bei der SDL Docu durch,
    vorallem eben nicht bei den Datentypen, da die nicht in
    der Deutschen Doku erklärt werden.

    cu max



  • Hi,
    leider geht es immer noch nicht.
    Er kompiliert linkt es und führt es aus,
    aber sofort nachdem er mit der Ausführung anfängt,
    gibt er einen schweren Fehler aus und tut debuggen.
    Naja ich linke alles was ich brauche, die header sind alle
    includiert ich weis nicht mehr an was es liegen sollte,
    ich werde wohl ne eigene Bmp font linie machen müssen.
    Ich will euch nicht mehr plagen.

    PS:Es hat irgendetwas mit der SDL.dll zu tuen, aber
    die ist auch im richtigen System Verzeichniss,
    Win Xp System32.

    cu max



  • Noch ein letztes Mal color und &color tauschen...!?? 😃



  • hallo

    evtl bracht die sdl_ttf double buffering? (kA obs wirklich so ist, bin auch noch sdl noob 😉 )

    #include <SDL.h>  
    #include "SDL_ttf.h"  
    
    //Präprozessor befehle die leider nötig sind damit SDL läuft.  
    #ifdef _WIN32  
    #undef main  
    #endif  
    
    int main(){  
        SDL_Init(SDL_INIT_VIDEO);  
        SDL_Surface *screen;  
        screen=SDL_SetVideoMode(1024,768,32,SDL_DOUBLEBUF);  //doublebuffering aktivieren
        TTF_Init();  
        SDL_Surface *TextSurface;   
    
    TTF_Font *pFont;  
    
    pFont = TTF_OpenFont("Arial.ttf",12);  
    SDL_Color color; 
    color.r = color.g = color.b = 255; //schriftfarbe weiss 
    
    TextSurface = TTF_RenderText_Solid(pFont,"Alles wird besser",color);                                                                                                           
    SDL_BlitSurface(TextSurface,NULL,screen,NULL);  
    SDL_Flip(screen); //'fertiges' screen anzeigen
    
    SDL_FreeSurface(TextSurface);  
    
    TTF_CloseFont(pFont); 
    TTF_Quit();  
    
        SDL_Delay(3000);  
        SDL_Quit();  
        return 0;  
    }
    


  • @max

    auch auf dei gefahr hin mir viele viele viele feinde zu machen, möchte ich einmal TGGC zitieren:

    LERN CODEN!


Anmelden zum Antworten