您的位置: 旅游網 > 圖庫 >> 美女模特

    中使用創建特效字體覆蓋

    發布時間:2021-10-28 05:25:19

    來自于微軟.NET技術的C++托管擴展所包含的GDI+技術功能十分強大,本文將介紹如何使用GDI+的畫刷來繪制文本。

    一、使用畫刷繪制文本的基本技術

    本文所帶的例子程序允許用戶定義所要顯示的文本、字體尺寸、顯示文本所用的畫刷(格畫刷或漸變畫刷)以及繪制文本的顏色等。例子代碼下載:p

    下面是GDI+中使用漸變畫刷或格畫刷繪制文本的基本步驟:

    1、 在控件的繪制(Paint)事件中添加一個事件處理函數。

    在這個處理函數中進行繪制文本的相關處理,這樣控件才能正確地進行重繪。

    2、 獲取一個圖形(Graphics)對象。

    正如我們所熟悉的設備上下文一樣,圖形對象是NET封裝的一個繪制平面,例如,當在一個PictureBox控件上進行繪制時,可以調用PictureBox::CreateGraphics方法來獲取一個Graphics對象,并在控件上繪圖時使用這個圖形(Graphics)對象。互聯上有很多例子都是這么做的,但是,有一個問題是,這樣得到的Graphics對象不是永久對象,如果用戶從當前程序轉到另一個應用程序并再次返回時,這個控件將無法正確地進行重繪。所以 ,要得當圖形對象應當使用傳遞給控件Paint方法的PaintEventArgs對象中的Graphics對象,代碼如下所示:

    private: System::Void picText_Paint(System::Object * sender,

    System::Windows::Forms::PaintEventArgs * e)

    {

    ...

    Graphics* g = e-Graphics;

    3、實例化一個字體對象

    在字體類的13個構造函數中,最基本的一個構造函數只需要你提供字體名及字體的大小。在下面的例子中,創建了一個20點,\"Times New Roman\"類的常規字體:

    using namespace System::Drawing;

    ...

    Font* font = new Font(S\"Times new Roman\", 20, FontStyle::Regular);

    4、測量將被繪制的文本尺寸

    為了繪制文本需要使用Graphics::MeasureString方法來測量文本尺寸。可以使用Graphics::MeasureString方法來完成這個任務。這個方法需要提供被測量的文本及字體對象,并返回SizeF結構對象,這個結構包含了將要進行繪制文本的尺寸。

    SizeF textSize = g-MeasureString(S\"My Sample Text\", font);

    5、實例畫刷對象

    可以使用各種各樣的畫刷進行繪制文本,包括格畫刷、線性漸變畫刷、路徑漸變畫刷、實體畫刷及紋理畫刷等,只是在創建各個不同的實例畫刷時傳遞的參數有一些小小的不同而已。對各種畫刷進行探討不是本文的內容,在本文的實例中只使用兩種畫刷(格畫刷及線性漸變畫刷)。

    40,089 // HatchBrush example

    Brush* brush = new HatchBrush(HatchStyle::Cross,

    Color::Black, Color::Blue);

    // LinearGradientBrush example

    RectangleF* rect = __nogc new RectangleF(PointF(0, 0), textSize);

    brush= new LinearGradientBrush(*rect, Color::Black, Color::Blue,

    LinearGradientMode::ForwardDiagonal);

    6、(選項)填充背景

    為了使應用程序有特色,可以在繪制文本前對背景進行顏色填充,這有兩個標準的方法。較簡單的方法是調用Graphics::Clear方法并定義將使用的顏色;但是有時需要更高級的控制,這時候需要使用Graphics::FillRectange方法。

    Graphics::FillRectange方法允許開發人員規定所選擇的畫刷對象并定義確切的矩形坐標位置。關于畫刷對象,可以使用實例化的自定義畫刷或者是系統畫刷SystemBrushes,系統畫刷定義了若干屬性成員,它們是實心畫刷,各自用來表現窗口的不同的元素,包括激活的邊框及標題條等。

    // Use the Windows-defined color for controls

    // and explicitly state the rectangle coordinates

    g-FillRectangle(SystemBrushes::Control, picText-Left, picText-Top,

    picText-Right - picText-Left, picText-Bottom - picText-Top);

    // Color the entire drawing surface using White

    g-Clear(Color::White);

    7、繪制文本

    一旦將所有的GDI+對象實例化后,下面所需要做的事就是調用Graphics::DrawString方法。下面的例子使用了這個方法,在這個方法里規定了需要顯示的文本、畫刷和字體及顯示文本的位置。

    // Center the text on the drawing surface

    g-DrawString(txtToDisplay-Text, font, brush,

    (picText-Width - dth) / 2,

    (picText-Height - ight) / 2);

    如何調理兒童脾胃虛弱
    玉林好醫院白癜風
    術后營養品有哪些
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 中文字幕无线码一区| 伊人久久中文大香线蕉综合| 99riav视频国产在线看| 日本三级在线视频| 亚洲国产精品久久丫| 男高中生大粗吊gvlive| 国产亚洲精品自在久久| 尤物视频在线看| 女皇跪趴受辱娇躯| 久久久久亚洲av成人无码| 欧美无人区码卡二卡3卡4免费| 免费精品一区二区三区在线观看| 高清国产一级精品毛片基地| 国产精品自拍电影| www.噜噜噜| 护士人妻hd中文字幕| 亚洲av无码一区二区三区不卡| 热99re久久精品2久久久| 又粗又硬又爽的三级视频| 麻豆一精品传媒媒短视频下载| 国产精品扒开做爽爽爽的视频| а√最新版地址在线天堂| 日本不卡一区二区三区最新| 亚洲AV日韩AV永久无码下载| 毛片免费在线播放| 再深点灬舒服灬太大了网站 | 免费久久人人爽人人爽av| 蜜臀AV在线播放| 国产成人黄色小说| 91精品视频在线免费观看| 学渣坐在学长的棒棒上写作业作文| 久久久这里有精品| 校花的好大的奶好爽漫画| 亚洲熟妇中文字幕五十中出| 福利小视频在线观看| 四虎国产精品免费久久| 韩国免费高清一级毛片性色| 国产特级毛片aaaaaaa高清| 538免费视频| 在免费jizzjizz在线播| 你懂的视频在线|