人人做人人澡人人爽欧美,国产主播一区二区,久久久精品五月天,羞羞视频在线观看免费

當(dāng)前位置:蘿卜系統(tǒng)下載站 > 技術(shù)開發(fā)教程 > 詳細(xì)頁面

如何在 BCB 中旋轉(zhuǎn)并輸出文字

如何在 BCB 中旋轉(zhuǎn)并輸出文字

更新時(shí)間:2022-09-21 文章作者:未知 信息來源:網(wǎng)絡(luò) 閱讀次數(shù):

有很多文章介紹如何在 VC 中輸出旋轉(zhuǎn)文字,但卻很少見到哪篇文章介紹在 BCB 中產(chǎn)生類似效果的。。以至于很多人認(rèn)為在 BCB 中是無法做到類似效果的,當(dāng)然這些人就有理由在那里口口聲聲地說 BCB 如何如何的差勁了!

這個(gè)當(dāng)然和 BCB 本身那套圖形組件的設(shè)計(jì)是有很大關(guān)系的。

VCL 圖形組件封裝了 WINDOWS  圖形設(shè)備接口(GUI),使得在 WINDOWS 程序設(shè)計(jì)中添加圖形變得很容易。BCB 的設(shè)計(jì)的確很優(yōu)秀!它的意圖是將 VCL 圖形組件 設(shè)計(jì)成三個(gè)層次:

最高層:繪制線條和圖形,比如:MoveTo, LineTo, Rectangle, and Ellipse
              輸出并控制文本,比如:TextOut, TextHeight, TextWidth, and TextRect
              填充形狀,比如:FillRect and FloodFill

中層:   定制輸出的文本和圖形,通過控制以下屬性:Pen, Brush, and Font,Pixels
              復(fù)制以及合并圖形,比如:Draw, StretchDraw, BrushCopy, and CopyRect 方法; CopyMode 屬性

底層:  直接調(diào)用 WINDOWS 的 GDI 函數(shù),VCL 圖形組件中提供了一個(gè) Handle 屬性,通過它,你能控制一切!

BCB 的用戶絕大多數(shù)只會(huì)使用高層和中層的一些方法和屬性,他們壓根不知道還有一個(gè)什么 Handle 屬性!針對(duì)這些用戶,以及那些對(duì) BCB 有異議的人,我提供了下面這個(gè)例子來說明 BCB 的強(qiáng)大以及易用性。

很簡(jiǎn)單,幾句代碼:

void __fastcall TForm1::FormPaint(TObject *Sender)
{
         LOGFONT lf;

        GetObject(Canvas->Font->Handle,
             sizeof (LOGFONT),  
             &lf);

        lf.lfEscapement =  450;   //set to 450 to make 45 degree angle
        lf.lfOrientation = 450;
        lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;

        Canvas->Font->Handle = CreateFontIndirect (&lf);
        Canvas->Brush->Style = bsClear;
        Canvas->Pen->Color=clRed;
        Canvas->TextOut (20, 120, "WOW!! Angled text!");
}

怎么樣?是不是很簡(jiǎn)單啊。。。我記得在 VC 中單定義一個(gè)字體變量就要十多個(gè)參數(shù)呢!下面我們來簡(jiǎn)單地分析一下這個(gè)例子:

第一句:LOGFONT lf;
LOGFONT 變量能完全地控制了字體的屬性,在 wingdi.h 中被定義為:typedef LOGFONTA LOGFONT; 而 LOGFONTA 定義為:

typedef struct tagLOGFONTA
{
    LONG      lfHeight;
    LONG      lfWidth;
    LONG      lfEscapement;
    LONG      lfOrientation;
    LONG      lfWeight;
    BYTE      lfItalic;
    BYTE      lfUnderline;
    BYTE      lfStrikeOut;
    BYTE      lfCharSet;
    BYTE      lfOutPrecision;
    BYTE      lfClipPrecision;
    BYTE      lfQuality;
    BYTE      lfPitchAndFamily;
    CHAR      lfFaceName[LF_FACESIZE];
} LOGFONTA;

第二句:

GetObject(Canvas->Font->Handle,    //看!用到 Handle 屬性了吧!這句用來取得畫布字體的句柄
          sizeof (LOGFONT),       //這句取得 LOGFONT 的 SIZE
          &lf);

下面幾句通過調(diào)整 LOGFONT 的屬性來控制字體

lf.lfEscapement =  450;   //set to 450 to make 45 degree angle
lf.lfOrientation = 450;
lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;

下面創(chuàng)建了一個(gè)新的字體,并且用來設(shè)置 Canvas->Font 的字體

Canvas->Font->Handle = CreateFontIndirect (&lf);
Canvas->Brush->Style = bsClear;
Canvas->Pen->Color=clRed;
Canvas->TextOut (20, 120, "WOW!! Angled text!");


就這么簡(jiǎn)單。。。在底層控制其他的圖形也類似于這種方法,大家不仿試試:)

溫馨提示:喜歡本站的話,請(qǐng)收藏一下本站!

本類教程下載

系統(tǒng)下載排行

網(wǎng)站地圖xml | 網(wǎng)站地圖html
主站蜘蛛池模板: 嘉黎县| 广安市| 高陵县| 曲靖市| 卢龙县| 惠来县| 易门县| 新兴县| 凤台县| 阳高县| 哈巴河县| 澜沧| 南川市| 东平县| 中西区| 潢川县| 万源市| 罗田县| 潞西市| 开江县| 诸城市| 乐至县| 临城县| 微山县| 安福县| 古丈县| 汽车| 海口市| 辽中县| 丽江市| 阿拉善左旗| 慈溪市| 兖州市| 扎鲁特旗| 积石山| 德化县| 竹溪县| 睢宁县| 连州市| 上蔡县| 齐齐哈尔市|