WM_PAINT i romiar czcionki

0

Witam !

Mam problem związany czysto z API, szukałem na SDK'ach, ale nic nie znalazłem.
Mianowicie jak zmienić rozmiar czcionki, która jest obsługiwana podczas komunikatu WM_PAINT ???
Podejrzewam że będzie trzeba kombinowac z HFONT, ale pewien na 100% nioe jestem.
Powiem jeszcze że chodzi tutaj o funkcję TextOut. Jak zrobić aby tekst wyświetlany przez nią miał inny rozmiar ???

0

Co do HFONT to trafiles :)
Tylko ze moze to byc troszke skomplikowane!!
Jesli chcesz zmienic czcionke (fonta) wtedy mozesz skorzystac z :
1.
HFONT hOldFont = (HFONT)SelectObject(hDC, GetStockObject(ANSI_VAR_FONT));
TextOut(hDC,10,30,"asdasdasdas",10);
DeleteObject(SelectObject(hdc,hOldFont));
Lecz funkcja GetStockObject mozesz pobrac tylko predefiniowane systemowe fonty !!

Mozesz rowniez skorzystac z :

  • AddFontResource - musisz miec plik opisujacy nowego fonta !!
  • CreateScalableFontResource
  • CreateFontIndirect

  • CreateFont - i to powinno Cie najbardziej zainteresowac bo tutaj mozesz stworzyc fonta o innej
    wielkosci niz domyslna np. :

    HFONT hNewFont = CreateFont(30/tutaj wysokosc/,0/tutaj szerokosc/,0,0,
    FW_DONTCARE,FALSE,FALSE,FALSE,DEFAULT_CHARSET,
    OUT_CHARACTER_PRECIS,CLIP_DEFAULT_PRECIS,
    DEFAULT_QUALITY,FF_DONTCARE,NULL);
    hOldFont = (HFONT)SelectObject(hDC, hNewFont);
    TextOut(hDC,10,30,"asdasdasdas",10);
    DeleteObject(SelectObject(hDC,hOldFont));

Niestety nie znam prostej funkcji ktora by tylko zmieniala rozmiar czcionki :(

0

Dzięki

Chcąc utworzyć sobie parametry dla czcionki używam funkcji CreateFont (ona zwraca HFONT) ale miałem problem z tym aby text w WM_PAINT był rysowany tą właśnie czcionką.
Teraz juz wiem, należy użyć funkcji SelectObject(hDC,nasz_typ_hfont), potem narysować to co trzeba, a potem DeleteObject.

0

Fajna stronka o WinApi {po polsku!} to: www.winapi.prv.pl
tam sa artykuly o takich rzeczach!

1 użytkowników online, w tym zalogowanych: 0, gości: 1