IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

affichage de texte petite taille


Sujet :

Windows

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage de texte petite taille
    Bonjour
    je suis débutant en programmation C ( a partir de la consol) et je suis en train de faire des appel à des API32 ,
    ci-dessous mon fichier source) ma question est pourquoi on obtient pas une bonne qualité d'affichage du texte comme celui du système d'exploitation () les police de taille petites sont presque illisible.) je travail avec un laptop de résolution 1920 x 1080.
    (j'ai fait une capture écran pour monter la différence de netteté entre sortie sur console du texte et l'affichage dans la fenetre avec textOutNom : hello.jpg
Affichages : 182
Taille : 825,5 KoNom : hello.jpg
Affichages : 182
Taille : 825,5 Ko


    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    #include <windows.h>
    #include <stdio.h>
    #include <wingdi.h>
    #include <wincon.h>
    //#define IDR_MANIFiEST  1
    // #define RT_MANIFEST  24
     
    LRESULT CALLBACK MainWndProc(HWND, UINT, WPARAM, LPARAM);
    HWND WINAPI GetConsoleWindow(void);
    int WINAPI WinMain(HINSTANCE hinstance, HINSTANCE hPrevInstance,
                                                    LPSTR lpCmdLine, int nCmdShow)
    {
        HWND hwnd;
        MSG msg;
        WNDCLASS wc;
     
        wc.style = 0;
        wc.lpfnWndProc = MainWndProc;
        wc.cbClsExtra = 0;
        wc.cbWndExtra = 0;
        wc.hInstance = hinstance;
        wc.hIcon = LoadIcon(NULL, IDI_APPLICATION);
        wc.hCursor = LoadCursor(NULL, IDC_ARROW);
        //wc.hbrBackground = (HBRUSH)(1 + COLOR_BTNFACE);
         wc.hbrBackground = (HBRUSH)GetStockObject(BLACK_BRUSH);
        wc.lpszMenuName =  NULL;
        wc.lpszClassName = "MaWinClass";
     
     
        if(!RegisterClass(&wc)) return FALSE;
     
        hwnd = CreateWindow("MaWinClass", "Dessiner", WS_OVERLAPPEDWINDOW,
                                       CW_USEDEFAULT, CW_USEDEFAULT, 500, 500,
                                                       NULL, NULL, hinstance, NULL);
        if (!hwnd) return FALSE;
     
        ShowWindow(hwnd, nCmdShow);
        UpdateWindow(hwnd);
     
     
        while (GetMessage(&msg, NULL, 0, 0))
        {
            TranslateMessage(&msg);
            DispatchMessage(&msg);
        }
        return msg.wParam;
    }
    /******************************************************************************/
     
    LRESULT CALLBACK MainWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
    {
        switch (uMsg)
        {
            case WM_PAINT :
                {
                  HBRUSH hbRed, hbGreen, hbrOld;
                  HPEN hp2px, hpOld;
                  HFONT NewFont, OldFont;
                  LOGFONT lf;
     
                  char st[] = "Programme sous windows Bouguezine" ;
     
                  PAINTSTRUCT ps;
                  HDC hdc = BeginPaint(hwnd, &ps);
                  HDC hDC;
     
                  SetBkMode(hdc, TRANSPARENT);
                  TextOut(hdc, 10, 20, st, lstrlen(st));
     
                  Rectangle(hdc, 20, 60, 120, 100);
     
                  hp2px = CreatePen(PS_SOLID, 1, 0x00FFFF00);
                  hpOld = SelectObject(hdc,hp2px);
     
                  hbRed = CreateSolidBrush(0x000000FF);
                  hbrOld = SelectObject(hdc,hbRed);
     
                  Rectangle(hdc, 160, 60, 260, 100);
     
                  hbGreen = CreateHatchBrush(HS_DIAGCROSS, 0x00FFFFFF);
                  SelectObject(hdc,hbGreen);
                  DeleteObject(hbRed);
     
                  Ellipse(hdc, 0, 0, 400, 120);
     
                  MoveToEx(hdc, 0, 300, NULL);
                  LineTo(hdc, 800, 300);
     
                  SelectObject(hdc,hbrOld);
                  DeleteObject(hbGreen);
     
                  SelectObject(hdc,hpOld);
                  DeleteObject(hp2px);
     
                  ZeroMemory(&lf, sizeof(LOGFONT));
                  lstrcpy(lf.lfFaceName,"Arial");
                  lf.lfHeight =  7;
                  lf.lfItalic = FALSE;
                  lf.lfWeight = FW_LIGHT;
                  lf.lfPitchAndFamily= FD_WRITE;
                  NewFont = CreateFontIndirect(&lf);
                  OldFont = SelectObject(hdc,NewFont);
                  SetTextColor(hdc, 0x00FFFFFF);
                  TextOut(hdc, 10, 180, st, lstrlen(st));
     
     
     
     
                  SelectObject(hdc,OldFont);
                  DeleteObject(NewFont);
     
                  EndPaint(hwnd, &ps);
     
     
     
     
                  return 0;
                }
     
            case WM_DESTROY :
                PostQuitMessage(0);
                return 0;
     
            default :
                return DefWindowProc(hwnd, uMsg, wParam, lParam);
        }
    }

  2. #2
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Bonjour,

    Si tu veux faire une interface utilisateur il est préférable d'utiliser un framework, ce sera beaucoup plus simple à apprendre et à utiliser. Si l'affichage est meilleur sur le système d'exploitation c'est parce que lui même n'utilise GDI, dont le rendu est matriciel et pixellisé, mais DirectWrite.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage de texte petite taille
    Merci Kaitlyn pour les clarifications.
    d'après votre réponse, il serait impossible d'essayer d'améliorer l'affichage a travers les API ou à travers les bibliothèques tel que SDL ou..
    Cordialement

  4. #4
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Je ne connais pas bien SDL2 mais il me semble que la lib freetype2 y est intégrée, donc oui avec les bonnes fonctions tu peux avoir un bon rendu.

    Je remarque que tu as ajouté une capture d'écran à ton premier message, mais la console c'est encore autre chose. Quoi que. Fais un clic droit sur la barre de titre, récupère le nom de la police et sa taille, utilise les mêmes dans ton code et regarde si ça change quelque chose. Remarque que tu as aussi des options en rapport avec la qualité, conf entre autres lfQuality de LOGFONT et la formule d'ajustement en regard de lfHeight, mais ça ne change rien à ma première réponse.

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage de texte petite taille
    Bonjour, et merci KAITLYN pour vos clarification, j'ai fait comme vous l'avez demandé ( la font et le size du texte de la sortie console ont été implémentés dans le fichier source) le resultat est beaucoup mieux Nom : txt.png
Affichages : 95
Taille : 33,3 Ko, mais pas exactement le même!!!,

  6. #6
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    J'ai parlé d'une formule dans le message précédent, l'as-tu essayée ? Concrètement il faudrait remplacer dans ton code la ligne lf.lfHeight= size; par lf.lfHeight= -MulDiv(size, GetDeviceCaps(hdc, LOGPIXELSY), 72); où size représente donc la valeur que tu as relevée dans ta console.

  7. #7
    Rédacteur/Modérateur
    Avatar de Andnotor
    Inscrit en
    Septembre 2008
    Messages
    5 693
    Détails du profil
    Informations personnelles :
    Localisation : Autre

    Informations forums :
    Inscription : Septembre 2008
    Messages : 5 693
    Points : 13 128
    Points
    13 128
    Par défaut
    Tu as un problème de manifest, l'application n'est pas DPI-aware.

    En l'absence d'une information claire, l'OS ne sait pas comment appliquer la mise à l'échelle et ne fait dès lors que zoomer la fiche, d'où cet effet flouté.

  8. #8
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage text
    Citation Envoyé par kaitlyn Voir le message
    J'ai parlé d'une formule dans le message précédent, l'as-tu essayée ? Concrètement il faudrait remplacer dans ton code la ligne lf.lfHeight= size; par lf.lfHeight= -MulDiv(size, GetDeviceCaps(hdc, LOGPIXELSY), 72); où size représente donc la valeur que tu as relevée dans ta console.

  9. #9
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage texte
    Bonjour, et merci Kaitlyn. j'ai fait les modification selon votre indication, le résultat est satisfaisant ( même s'il ne correspond pas à 100% à l'affichage du système)Nom : txt131221.png
Affichages : 69
Taille : 20,6 Ko

  10. #10
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage texte
    Citation Envoyé par Andnotor Voir le message
    Tu as un problème de manifest, l'application n'est pas DPI-aware.

    En l'absence d'une information claire, l'OS ne sait pas comment appliquer la mise à l'échelle et ne fait dès lors que zoomer la fiche, d'où cet effet flouté.

  11. #11
    Nouveau Candidat au Club
    Homme Profil pro
    responsable
    Inscrit en
    Décembre 2021
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Algérie

    Informations professionnelles :
    Activité : responsable
    Secteur : Enseignement

    Informations forums :
    Inscription : Décembre 2021
    Messages : 7
    Points : 1
    Points
    1
    Par défaut affichage texte
    Citation Envoyé par Andnotor Voir le message
    Tu as un problème de manifest, l'application n'est pas DPI-aware.

    En l'absence d'une information claire, l'OS ne sait pas comment appliquer la mise à l'échelle et ne fait dès lors que zoomer la fiche, d'où cet effet flouté.

    Bonjour et merci Andnotor, pour cette clarification. afin que je puisse chercher sur cette piste, pourriez vous m'indiquer quelques supports documentaire ( tuto, doc etc...)

    cordialement

  12. #12
    Membre éprouvé
    Femme Profil pro
    ..
    Inscrit en
    Décembre 2019
    Messages
    562
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 94
    Localisation : Autre

    Informations professionnelles :
    Activité : ..

    Informations forums :
    Inscription : Décembre 2019
    Messages : 562
    Points : 1 253
    Points
    1 253
    Par défaut
    Pour le manifest, ça dépend de ce que tu utilises comme IDE ou chaîne de compilation. Cela dit tu peux faire un essai avec la fonction SetProcessDpiAwarenessContext(DPI_AWARENESS_CONTEXT_PER_MONITOR_AWARE_V2); à placer et tester le retour dès le début de WinMain(), mais sans la formule d'ajustement cette fois-ci. En ce qui concerne DPI/GDI, il y a un ici un billet de blog assez complet. Mais bon, il faut vraiment être très attaché à GDI pour s'embêter avec tout ça.

Discussions similaires

  1. [JTree] taille de l'affichage du texte d'un noeud
    Par Sophie L. dans le forum Composants
    Réponses: 2
    Dernier message: 22/12/2009, 17h33
  2. Affichage de texte
    Par Yellowmat dans le forum OpenGL
    Réponses: 2
    Dernier message: 15/12/2004, 12h25
  3. [C#] Affichage de texte vertical...
    Par AntiSAL dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/06/2004, 14h46
  4. Affichage de texte est mise à jour de l'écran
    Par Galdor_sp dans le forum OpenGL
    Réponses: 3
    Dernier message: 14/03/2004, 22h31
  5. [MX 2004] Affichage du texte dynamique
    Par caramel dans le forum Flash
    Réponses: 8
    Dernier message: 29/01/2004, 16h07

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo