請教如何在桌面寫任何大小的字 |
尚未結案
|
naposhao
初階會員 發表:18 回覆:38 積分:31 註冊:2002-10-13 發送簡訊給我 |
在過往的文章得知有方法可在桌面利用 h:=FindWindow('Progman',nil) ;
EnumChildWindows(h,@EnumChidProc,0) ;
caption:=inttohex(hDesktop,8) ;
dc:=GetDC(hDesktop) ;
s:='This is a test' ;
Windows.TextOut(dc,Screen.Width-100,10,pchar(s),length(s)) ;
ReleaseDC(hDesktop,dc) ; 把句子或文字寫到桌面上,但請問如何才可以把字型放大或選用其他字型?
|
allenchan
資深會員 發表:10 回覆:306 積分:283 註冊:2004-01-06 發送簡訊給我 |
這是 BCB 的 Code,給您參考看看,先在畫面上放一個 ComboBox:
void __fastcall TForm1::FormCreate(TObject *Sender) { ComboBox1->Clear(); for (int i = 0; i < Screen->Fonts->Count; i ) ComboBox1->Items->Add(Screen->Fonts->Strings[i]); } void __fastcall TForm1::Button1Click(TObject *Sender) { TCanvas *c = new TCanvas; c->Handle = GetDC(0); /* 決定使用字型 */ c->Font->Name = ComboBox1->Text; /* 決定字型大小 */ c->Font->Size = 36; c->TextOut(1, 1, "Hello World"); delete c; } |
naposhao
初階會員 發表:18 回覆:38 積分:31 註冊:2002-10-13 發送簡訊給我 |
以下的程式是在此網站找到的, 但未能改變TextOut的字體大小, 請各位繼續幫忙,謝謝! var
hDesktop : THandle ;
s : string ; function EnumChidProc(h:THandle;lp:DWORD):bool ; stdcall ;
var
cBuf : array[0..255] of char ;
begin
GetClassName(h,cBuf,255) ;
if StrComp(cBuf,'SysListView32')=0 then
begin
hDesktop:=h ;
Result:=false ;
exit ;
end ; Result:=true ;
end ; procedure TForm1.Button1Click(Sender: TObject);
var
h : THandle ;
dc : HDC ;
begin
h:=FindWindow('Progman',nil) ;
EnumChildWindows(h,@EnumChidProc,0) ;
caption:=inttohex(hDesktop,8) ;
dc:=GetDC(hDesktop) ;
s:='This is a test.' ;
Windows.TextOut(dc,10,10,pchar(s),length(s)) ;
ReleaseDC(hDesktop,dc) ;
end;
|
hagar
版主 發表:143 回覆:4056 積分:4445 註冊:2002-04-14 發送簡訊給我 |
試試如下的方式:
procedure TForm1.Button1Click(Sender: TObject); var DesktopDC: HDC; DesktopCanvas: TCanvas; begin DesktopDC := GetWindowDC(GetDeskTopWindow); DesktopCanvas := TCanvas.Create; DesktopCanvas.Handle := DesktopDC; DesktopCanvas.Font.Color := clRed; DesktopCanvas.Font.Name := 'Arial Black'; DesktopCanvas.Font.Size := 24; DesktopCanvas.Textout(300, 150, 'Delphi is good!'); DesktopCanvas.Free; ReleaseDC(GetDeskTopWindow,DesktopDC); end;-- QBQ: 我能做什麼? |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
小弟插个花:
hagar大大您好:小弟测试了一下,并不能在桌面上写字,而是在当前窗体上写字小弟这里是 class="code">
procedure TForm1.Button1Click(Sender: TObject);
var
h : THandle ;
dc : HDC ;
DesktopCanvas:TCanvas;
begin
h:=FindWindow('Progman',nil) ;
EnumChildWindows(h,@EnumChidProc,0) ;
caption:=inttohex(hDesktop,8) ;
dc:=GetDC(hDesktop) ;
s:='This is a test.' ;
DesktopCanvas := TCanvas.Create;
DesktopCanvas.Handle := DC;
DesktopCanvas.Font.Color := clRed;
DesktopCanvas.Font.Name := 'Arial Black';
DesktopCanvas.Font.Size := 24;
DesktopCanvas.Textout(100, 10, s);
DesktopCanvas.Free;
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |