Einfache Grafikprogrammierung für ein Automatensystem



  • Hallo @ all,

    ich habe noch immer ein Problem bei der Suche nach einer passenden Software und hoffe auf Eure Hilfe...

    Ich muss für ein Projekt eine einfache grafische Oberfläche entwerfen. Es handelt sich um ein Automatensystem (ähnlich einen Bankautomaten oder Zahlautomaten im Parkhaus). Die Eingabe des Kunden erfolgt wie beim Bankautomaten über externe Taster, die neben dem Display angeordnet sind. Ich brauche also nur eine grafische Oberfläche zur reinen Information (keine Rückmeldungen über Buttons, Schaltflächen o. ä.).

    Die Grafik soll unter SUSE Linux 8 und C laufen, möglichst einfach und schlicht sein und keine Fensteroptik haben. Ich brauche insbesondere die Möglichkeit, Text und einzelne Zeichen in verschiedenen Größen auszugeben. Ich muss ein ansprechendes Design verwirklichen können und jpg-Bilder bzw. andere Bildformate einblenden können.

    Eine reine Alpha-Oberfläche oder curses scheiden wohl aus. Mit SDL bekomme ich das Design nicht so hin wie ich will. Da muss es doch was Besseres geben? QT fällt aus Gründen der Lizenzrichtlinien aus, da die Anwendung kommerziell genutzt werden soll. GTK ist zu sehr fixiert auf das UserInterface (das ganze Zeug mit Mausbedienung, Buttons, Menüs, usw. brauche ich gar nicht) und die einfache "formatierte" Textausgabe mit GTK gibt es nicht...

    Ich bin für jede Hilfe (Links, Tutorials, usw.) dankbar. Vielleicht gibt es auch Tools, mit denen solche "schlichten" Oberflächen entworfen werden können.

    Also, herzlichen Dank bereits jetzt...

    stexie



  • Wie wärs denn mit blanker XLib oder OpenMotif?



  • Mit SDL bekomme ich das Design nicht so hin wie ich will

    Wo haperts denn? Wenn ich mir so durchlese was du brauchst scheint die SDL genau das richtige zu sein. Für jpg brauchst du SDL-Image. Mit SDL-ttf kannst du TrueType-Fonts darstellen.

    Ansonsten gibt's noch Allegro. Kann ich aber weiter nichts zu sagen.



  • Ja, SDL-Image und SDL-ttf habe ich mir angeschaut. SDL-ttf hab ich auch schon mal probiert. Das ist wirklich genau das, was ich gesucht habe! Allerdings habe ich bisher keine Ahnung, wie ich mit SDL die Grafik hinbekommen soll. Ich muss halt verschiedene Texte in verschiedenen Größen auf meinem 10,4" Display (640*480) anordnen können. Bei anderen Programmiersprachen gibt es sowas wie Container usw. Dazu kämen noch ein oder zwei jpg's, was aber mit SDL-Image wohl kein Problem ist.

    Ich bekomme halt die Anordnung der einzelnen Elemente nicht hin. Gibt es da vielleicht ein Tutorial oder vielleicht sogar etwas Quelltext im Netz um da nen Ansatz zu finden. Irgendwie ist das mit SDL wahrscheinlich zu machen, mir fällt aber nichts mehr ein...

    Gibt es nicht einfach die Möglichkeit, die Position direkt in X/Y-Koordinaten anzugeben? Bei meinem System wird die Grafik ja direkt für ein bestimmtes Display (immer feste Auflösung mit 640*480) geschrieben, da brauche ich nichts kompatibles.



  • Hi,

    die Grafiken (also auch der gerenderte Text) sind durch Surfaces dargestellt.
    Diese lassen sich mit SDL_BlitSurface an beliebige Stellen des Screen-Surfaces (also des Fensters) zeichnen.

    Siehe auch http://www.libsdl.org/ -> Introduction
    Da hab ich gerade das gefunden:

    void zeigeBMP(char *datei, SDL_Surface *screen, int x, int y)
    {
        SDL_Surface *bild;
        SDL_Rect ziel;
    
        /* lädt die BMP-Datei in ein Surface */
        bild = SDL_LoadBMP(datei);
        if ( bild == NULL ) {
            fprintf(stderr, "'%s' konnte nicht geladen werden: %s\n", datei, SDL_GetError());
            return;
        }
    
        /* auf den Bildschirm kopieren
           die Surfaces sollten hier nicht gelockt sein. */
        ziel.x = x;
        ziel.y = y;
        ziel.w = bild->w;
        ziel.h = bild->h;
        SDL_BlitSurface(bild, NULL, screen, &ziel);
    
        /* den veränderten Bildschirm-Bereich auffrischen */
        SDL_UpdateRects(screen, 1, &ziel);
    
        SDL_FreeSurface(bild);
    }
    

Anmelden zum Antworten