Hintergrund bei TextOut



  • Ich möchte eine kleine Funktion (bzw. Methode) schreiben die mir ein schwarzen Kreis mit Weisser Schrift ausgibt. nun ist um die Schrift ein weisser Hintergrund. Der soll schwarz werden.
    Wie mach ich das?

    //im Konstruktor
    PenBlack=CreatePen(PS_SOLID, 1, RGB(0,0,0));
    BlackBrush=CreateSolidBrush(RGB(0,0,0));
    //die Methode
    void Menue::paintGrafik(int X, int Y)
    {
        hdc = GetDC(hwnd);
        SelectObject(hdc, PenBlack);
        SelectObject(hdc, BlackBrush);
        Ellipse(hdc, X, Y, X+90, Y+50);
        SelectObject(hdc, BlackBrush);
        SetTextColor(hdc, RGB(255,255,255));
        TextOut (hdc, X+10, Y+15, TEXT("ein Text"),8);
        ReleaseDC(hwnd, hdc);
    }
    

    im Prinzip muss ich nur den Hintergrund für das TextOut setzen.?



  • microsoft settextcolor



  • SetTextColor(hdc, RGB(255,255,255)); ???

    Habe ich doch drinen!
    Bitte Antworte doch in ganzen Sätzen.



  • bool Menu::paint_graphic(int x, int y)
    {
    	HDC hDC = GetDC(m_hWnd);
    	HPEN	hPenBlack	= CreatePen(PS_SOLID, 1, RGB(0,0,0));
    	HBRUSH	hBrushBlack	= CreateSolidBrush(RGB(0,0,0));
    	HGDIOBJ hOldPen		= SelectObject(hDC, hPenBlack);
    	HGDIOBJ hOldBrush	= SelectObject(hDC, hBrushBlack);
    	Ellipse(hDC, x, y, x + 90, y + 50);
    	SelectObject(hOldBrush);
    	SelectObject(hOldPen);
    	DeleteObject(hPenBlack);
    	DeleteObject(hBrushBlack);
    
    	SetBkMode(TRANSPARENT);
    	SetTextColor(hDC, RGB(255, 255, 255));
    	TextOut(hDC, x + 10, y + 15, TEXT("Ein Text"), 8);
    	ReleaseDC(hWnd, hDC);
    }
    

    SetBkMode(TRANSPARENT) brauchst du. So sollte dein Code in etwa aussehen. Man soll das Default-Objekt am Ende des Zeichenvorgangs wieder auswählen.



  • Ansatt den Brush so erstellen empfiehlt sich auch einfach:

    HGDIOBJ hOldBrush = SelectObject(hDC, GetStockObject(BLACK_BRUSH));
    

    Den muss man nämlich nicht mit DeleteObject löschen (aber man sollte den alten zurück-selektioeren.).


Log in to reply