selbsterstellter font, hintergrundfarbe des fonts ändern



  • hi, ich male mir eine fläche grau an und möchte dann darauf schreiben (mit einem selbst erstellten font).

    der hintergrund des textes den ich ausgebe ist dann aber weis, soll aber grau sein(wie der hintergrund). wie funktioniert das?

    wie kann ich die hintergrundfarbe der schrift ändern, damit diese auch grau ist?

    case WM_PAINT:
            {
    
            RECT clientArea;
    
            hdc = BeginPaint(hWnd, &ps);
            HBRUSH hOldBrush = (HBRUSH)SelectObject(hdc,
                                                    CreateSolidBrush(RGB(198,192,192)));
    
            SelectObject(hdc, CreatePen(PS_SOLID, 0, RGB(198, 192, 192)));
    
            clientArea.left = 0;
            clientArea.top  = 0;
            clientArea.right = iWindowWidth;
            clientArea.bottom = iWindowHeight / 10;
    
            Rectangle(hdc,
                      0,
                      0,
                      iWindowWidth,
                      iWindowHeight / 10);
    
            DeleteObject(SelectObject(hdc, hOldBrush));
    
            /******************************************/
    
            HFONT hFont = CreateFont(16,
                                     23,
                                      0,
                                      0,
                                      FW_NORMAL,
                                      false,
                                      false,
                                      false,
                                      DEFAULT_CHARSET,
                                      OUT_DEFAULT_PRECIS,
                                      CLIP_DEFAULT_PRECIS,
                                      ANTIALIASED_QUALITY,
                                      DEFAULT_PITCH ,
                                      L"test");
    
            SelectObject(hdc, hFont);
            TextOut(hdc, 20, 30, L"hallo", 5);
    
            DeleteObject(hFont);
    
            EndPaint(hWnd, &ps);
    


  • otto231 schrieb:

    wie kann ich die hintergrundfarbe der schrift ändern, damit diese auch grau ist?

    Z.B. via SetBkColor () :

    ...
     SelectObject (hdc, hFont);
    
     SetBkColor   (hdc,RGB(198,192,192)); // ändert Hintergrundfarbe der Schrift
     SetTextColor (hdc,RGB(255,255,0));   // ändert Schriftfarbe :-)
    
     TextOut      (hdc, 20, 30, L"hallo", 5);
     DeleteObject (hFont);
    ...
    

    🙂



  • Oder SetBkMode 😉 .



  • Hab zwar noch nie einen Font selbst erstellt 🙄 ,
    aber ich denke, daß der Font selbst natürlich keine weiße Hintergrundfarbe haben darf, sondern irgendwas transparentes oder ohne Hintergrundfarbe.

    Ansonsten würden die Vorschläge von merker und CodeFinder keine Wirkung zeigen. Ist doch einleuchtend, oder nicht 😉
    Martin



  • Mmacher schrieb:

    Hab zwar noch nie einen Font selbst erstellt 🙄 ,
    aber ich denke, daß der Font selbst natürlich keine weiße Hintergrundfarbe haben darf, sondern irgendwas transparentes oder ohne Hintergrundfarbe.

    Eine Schrift hat in der WinAPI immer eine Hintergrundfarbe (falls TRANSPARENT-Mode nicht gesetzt, dann ist die Farbe egal). Diese legt zum Beispiel fest wie der Inhalt des B's (also der Buchstabe 'B') gefüllt wird.


Anmelden zum Antworten