線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1446
推到 Plurk!
推到 Facebook!

請教如何在桌面寫任何大小的字

尚未結案
naposhao
初階會員


發表:18
回覆:38
積分:31
註冊:2002-10-13

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-12-28 16:29:10 IP:202.81.xxx.xxx 未訂閱
在過往的文章得知有方法可在桌面利用 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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-12-28 21:06:40 IP:61.62.xxx.xxx 未訂閱
這是 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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-03 22:36:30 IP:218.102.xxx.xxx 未訂閱
以下的程式是在此網站找到的, 但未能改變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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-04 03:40:42 IP:202.39.xxx.xxx 未訂閱
試試如下的方式:
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-04 10:54:44 IP:218.15.xxx.xxx 未訂閱
小弟插个花: 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; ReleaseDC(GetDeskTopWindow,DC); Windows.TextOut(dc,10,10,pchar(s),length(s)) ; ReleaseDC(hDesktop,dc) ; end; naposhao您好,参考看看 <>~~~静心养德~~~
系統時間:2024-05-03 16:17:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!