亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > Delphi > 正文

用API函數在DELPHI中實現“非典型”窗體

2019-11-18 18:34:42
字體:
來源:轉載
供稿:網友
 用API函數在DELPHI中實現“非典型”窗體
    現在的一些共享軟件特別是一些多媒體播放器軟件為了吸引用戶,很注重程序界面的設計。實際上,我們使用API函數也可以實現那些好看又另類的效果。
    1.異形窗體
    窗體只能是方的嗎?不是,還可以有其他形狀。這要用到兩個Win32 API函數。首先用CreateRoundRectRgn()函數在窗體內界定一個橢圓形區域。這里所指的區域(region)是一個特殊的API對象,我們可以在區域內部進行填充和剪裁等操作,從而定義窗體的外部特征。然后調用SetWindowRgn()函數繪制,更進一步還可以再用CombineRgn()函數來合并多個區域,例如在Delphi的單元文件中加入以下代碼:
    PRocedure TForm1.FormCreate(Sender: TObject);
    var
      FRegion1:THandle;
      FRegion2:THandle;
    begin
      FRegion1:=CreateRoundRectRgn(20,20,200,200,300,300);//界定一個橢圓區域
      FRegion2:=CreateRectRgn(170,170,400,400);//界定一個矩形區域
      CombineRgn(FRegion1,FRegion1,FRegion2,RGN_OR);//將兩個區域連接起來
      SetwindowRgn(handle,FRegion1,True);//對連接后的區域進行繪制
    end;
    程序段中的CreateRoundRectRgn()函數用來創建一個圓角矩形區域,它的原型為:
    HRGN CreateRoundRectRgn(
    int nLeftRect, // 左上角的X坐標
    int nTopRect, // 左上角的Y坐標
    int nRightRect, // 右下角的X坐標
    int nBottomRect, // 右下角的Y坐標
    int nWidthEllipse, //圓角所在橢圓的寬
    int nHeightEllipse  // 圓角所在橢圓的高
    );
    其他圖形如多邊形、橢圓形等都有對應的API函數,它們的原型如下:
    HRGN CreateEllipticRgn(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect)
    HRGN CreateEllipticRgnIndirect( CONST RECT *lprc)
    HRGN CreatePolygonRgn(CONST POINT *lPPT,int cPoints, int fnPolyFillMode)
    HRGN CreatepolypolygonRgn(CONST POINT *lppt,CONST INT *lpPolyCounts,int nCount,int fnPolyFillMode)
    HRGN CreateRectRgn(int nLeftRect,int nTopRect,int nRightRect,int nBottomRect)
    HRGN CreateRectRgnIndirect(CONST RECT *lprc)
    以上函數的參數很好理解,用來說明圖形內置矩形的坐標或指向該矩形。重點來看一下另外兩個函數:
    函數原型:SetWindowRgn(
              HWND hWnd,         //當前窗體的句柄
              HRGN hRgn,          //當前區域的句柄
              BOOL bRedraw,      //重繪標志
              )
    函數功能:該函數把已創建的區域的句柄作為參數傳遞給當前窗體的句柄,并在該區域范圍內繪制窗體;
    函數原型:CombineRgn(
              HRGN hrgnDest,  // 連接目的區域的句柄
              HRGN hrgnSrc1,  // 第一個連接源區域的句柄
              HRGN hrgnSrc2,  // 第二個連接源區域的句柄
              int fnCombineMode  // 連接模式
              )
    函數功能:該函數將兩個區域合并為一個新的區域,其中連接模式可取以下值:
    參數值          作用
    RGN_AND         由區域1與區域2的共有部分即交集創建新的區域
    RGN_COPY        創建區域1的副本作為新的區域
    RGN_DIFF        連接屬于區域1但不屬于區域2的部分為新的區域
    RGN_OR          連接區域1和區域2的所有部分即并集
    RGN_XOR。     連接區域1和區域2的所有部分即并去掉共有部分
    2.空心窗體
    這種窗體的特點是好端端的一個窗體,中間被挖了一部分。例如在Delphi的單元文件中加入以下代碼:
    procedure TForm1.FormCreate(Sender: TObject);
    var
      FRegion3:THandle;
    begin
      Canvas.Font.Name:='華文行楷';//設置字體 
      Canvas.Font.Size:=100;//設置字號
      BeginPath(Canvas.Handle); //得到vanvas上繪制的輪廓
      TextOut(form1.Canvas.Handle,0,20,'程序春秋',8);//將“程序春秋”四個字所占區域摳掉
      EndPath(Canvas.Handle);
      FRegion3:=PathToRegion(Canvas.Handle);//將以上區域賦給窗體
      SetwindowRgn(Handle,FRegion3,True);//開始繪制
    end;
    這里主要用到了三個API函數:
    函數原型:BOOL BeginPath(HDC hdc  //設備環境的句柄)
    函數功能:開始接收當前設備環境的路徑軌跡;
    函數原型:BOOL EndPath(HDC hdc  //設備環境的句柄) 
    函數功能:停止接收并將已接收的路徑軌跡賦給當前設備環境的句柄
    函數原型  BOOL TextOut(
              HDC hdc, // handle of device context
              int nXStart, // 起始位置的X坐標 
              int nYStart, // 起始位置的Y坐標
              LPCTSTR lpString, // 字符串地址
              int cbString  //字符串所包含字符數(注意一個漢字占兩個字符)
              )
    函數功能:在指定位置繪制給定字符串。
    小結:學會熟練使用API進行編程,是一項很重要的技能,有時可以達到意想不到的效果。以上幾種技巧旨在拋磚引玉,希望大家充分運用各種技巧,發揮自己想像,設計出更炫的窗體,美化自己的程序

上一篇:Delphi組件與屬性編輯器

下一篇:Delphi程序設計之--慣用法

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
學習交流
熱門圖片

新聞熱點

疑難解答

圖片精選

網友關注

亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品免费在线视频| 欧美中文字幕在线播放| 成人亚洲欧美一区二区三区| 欧美一级淫片videoshd| 欧美日韩国产丝袜另类| 久久视频免费观看| 欧美老女人在线视频| 在线观看免费高清视频97| 日韩av在线影院| www.久久久久| 国产欧美一区二区三区在线看| 亚洲18私人小影院| 搡老女人一区二区三区视频tv| 亚洲国产精品久久| 国产精品69精品一区二区三区| 亚洲美女av在线播放| 欧美成人sm免费视频| 久久久久久久一| 啊v视频在线一区二区三区| 日本午夜精品理论片a级appf发布| 久久久久女教师免费一区| 久久久免费电影| 国产精品96久久久久久| 国产成人av在线播放| 成人在线小视频| 久久影视电视剧凤归四时歌| 韩国三级电影久久久久久| 91天堂在线视频| 久色乳综合思思在线视频| 美女扒开尿口让男人操亚洲视频网站| 国产女人精品视频| 精品综合久久久久久97| 亚洲精品www久久久| 欧美最顶级的aⅴ艳星| 国产精品欧美在线| 国产精品久久久91| 亚洲激情 国产| 国产综合在线视频| 亚洲直播在线一区| 亚洲精品99久久久久| 久久久久久尹人网香蕉| 国产福利视频一区二区| 日本精品视频在线| 亚洲aⅴ日韩av电影在线观看| 欧美成人午夜免费视在线看片| 欧美风情在线观看| 国产婷婷色综合av蜜臀av| 一本色道久久88综合亚洲精品ⅰ| 久久中文字幕国产| 久久不射热爱视频精品| 欧美一级成年大片在线观看| 欧美劲爆第一页| 在线丨暗呦小u女国产精品| 精品国产欧美一区二区三区成人| 国外成人在线播放| 日韩高清免费在线| 欧美精品久久久久久久久久| 亚洲最新av在线| 日韩欧美中文字幕在线播放| 国产精品人成电影在线观看| 国产亚洲美女久久| 国产一区二区三区丝袜| 久久久99久久精品女同性| 国产精品久久久久久网站| 欧美视频中文字幕在线| 亚洲精品aⅴ中文字幕乱码| 国产97色在线| 欧美在线视频免费观看| 国产盗摄xxxx视频xxx69| 久久久久久成人精品| 91精品免费久久久久久久久| 国产精品免费观看在线| 亚洲高清不卡av| 久久久久久久久久国产| 久久人人爽人人爽人人片av高清| 日韩精品有码在线观看| 欧美大荫蒂xxx| 国产裸体写真av一区二区| 成人精品视频久久久久| 中文字幕日韩在线观看| 久久久精品亚洲| 日韩欧美在线播放| 精品香蕉一区二区三区| 国产精品日韩在线观看| 久久影视电视剧免费网站清宫辞电视| 欧美国产乱视频| 国产成人精品视频在线观看| 亚洲精品成人网| 91av在线视频观看| 日韩综合视频在线观看| xvideos亚洲人网站| 欧美性猛交xxxx乱大交| 97久久精品人人澡人人爽缅北| 国产精品久久不能| 国产精品99久久久久久白浆小说| 91在线高清免费观看| 在线视频日本亚洲性| 2018国产精品视频| 欧美乱妇高清无乱码| 欧美久久久精品| 日韩性生活视频| 久久久久久久久久久av| 97在线免费观看| 国产精品自产拍在线观看中文| 91禁外国网站| 8x拔播拔播x8国产精品| 8090成年在线看片午夜| 一本色道久久88综合亚洲精品ⅰ| 亚洲成人久久一区| 亚洲一品av免费观看| 久久久久亚洲精品| 国产91精品不卡视频| 91超碰caoporn97人人| 91国产精品视频在线| 国产成人精品免费久久久久| 91精品综合视频| 欧美一级黑人aaaaaaa做受| 一区二区三区视频在线| 欧美久久精品午夜青青大伊人| 麻豆国产精品va在线观看不卡| 亚洲精品视频免费| 欧美在线免费观看| 中文字幕久精品免费视频| 日韩精品久久久久久久玫瑰园| 国产精品18久久久久久麻辣| 国产va免费精品高清在线| 欧美乱妇40p| 日韩免费在线电影| 欧美另类99xxxxx| 日韩av网址在线观看| 日韩在线播放一区| 91精品国产91久久久久久吃药| 狠狠综合久久av一区二区小说| 午夜美女久久久久爽久久| 久久久爽爽爽美女图片| 午夜精品一区二区三区av| 久久精品亚洲国产| 九九热最新视频//这里只有精品| 久久成人一区二区| 亚洲偷欧美偷国内偷| 一个人看的www欧美| 久久久久久久久国产| 免费成人高清视频| 欧美激情a在线| 国产一区二区在线免费| 午夜精品久久久久久久男人的天堂| 日韩亚洲第一页| 国产日韩在线看| 成人中心免费视频| 欧美午夜宅男影院在线观看| 色综合久综合久久综合久鬼88| 国产精品香蕉av| 97碰在线观看| 成人国产在线激情| 久久人91精品久久久久久不卡| 欧美区在线播放| 欧美一区二三区| 日韩中文字幕在线观看| 亚洲电影免费观看高清完整版在线观看| 亚洲国产成人精品久久| 黄色精品在线看| 亚洲第一色在线| 国产成人精品久久久| 最新亚洲国产精品|