|
Psaní po pracovní ploše a zjíštění velikosti systémového fontu |
|
|
|
|
|
|
|
|
Napsal Lukáš Fendrych
|
|
Saturday, 07 August 2004 |
Dva návody na programy v Delphi
Psaní po pracovní ploše Vypisování na plochu může sloužit k informování uživatele i když minimalizuje vaši aplikaci a nebo pro zábavu. Ale pozor! O překreslování vypisovaného textu se musíte postarat sami, protože při dočasném překrytí textu např. oknem jiné aplikace text zmizí (tedy nebude automaticky opětovně překreslen). Též pokud dojde k "obnovení pracovní plochy" (např. výběrem položky Obnovit v kontextovém menu pracovní plochy), text opět zmizí. Proto musíte jeho překreslování hlídat a obnovovat sami.
Tak zpět k našemu příkladu. Jedná se o jednoduchý příklad použitý v události stisku tlačítka. Parametry, které nás budou hlavně zajímat, jsou samotný vypisovaný text, dále jeho souřadnice a barva. Jako font bude použijeme aktuální systémový font. Text bude vykreslen transparentně a barvu budeme volit opět pomocí trojkombinace RGB.
procedure TForm1.Button1Click(Sender: TObject); var dc: hdc; obarva: COLORREF; oBKM : integer; vyptext: string; begin vyptext := 'Tento text se vypíše na pracovní ploše' dc := GetWindowDC(GetDesktopWindow); try obarva := SetTextColor(DC, RGB(10, 200, 255)); oBKM := SetBkMode(DC, TRANSPARENT); TextOut(DC, 300, 300, vyptext, Length(vyptext)); SetBkMode(DC, oBKM); SetTextColor(DC, obarva); finally ReleaseDC(GetDesktopWindow, DC); end; end;
Z příkladu tedy plyne že barva se bude světle modrá a text bude vykreslen na souřadnicích 300x300.Samozřejmě musíme brát ohled na aktuální rozlišení obrazovky.
Zjištění velikosti systémového fontu Tento program bude sloužit k ukázání aktuální velikosti systémového fontu. Lze to použít např. pokud máte texty namačkané u sebe a jsou přesně podle velikosti fontu tak takové zvětšení může způsobit ořezání textu.A tak použitím této funkce můžeme třeba reagovat na velikost fontu. Pozor tato funkce bude vypisovat pouze jestli se jedmá o velký(102dpi) nebo malý(96dpi) font
function VelikostFontu : integer; var DC : HDC; begin DC := GETDC(0); Result := 0; case GetDeviceCaps(DC, LOGPIXELSX) of 96: Result := 1; 102: Result := 2; end; ReleaseDC(0, DC); end;
Pokud funkce vrátí hodnotu 1, jedná se o malý font (96 dpi), číslo 2 znamená velký font (102 dpi). Tuto funkci si můžete různě upravit třeba, aby vracela přímo velikost, ale to už nechám na vás.
undefined undefined |
|
Aktualizováno ( Saturday, 07 August 2004 )
|