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

    中使用創建特效字體覆蓋

    發布時間: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);

    如何調理兒童脾胃虛弱
    玉林好醫院白癜風
    術后營養品有哪些
    猜你會喜歡的
    猜你會喜歡的
    主站蜘蛛池模板: 久久青青草视频| 天天躁天天弄天天爱| 亚洲永久精品ww47| 男人天堂资源站| 成人在线观看一区| 从镜子里看我怎么c你的阅读视频| 成年美女黄网站色| 探花视频在线看视频| 亚洲成a人片毛片在线| 高清国产性色视频在线| 大肉大捧一进一出好爽视频mba| 久久久无码精品亚洲日韩按摩| 欧美美女毛茸茸| 午夜dj在线观看免费高清在线| 国产精品1024永久免费视频| 在线观看中文字幕| 中文字幕人成乱码熟女| 最近中文国语字幕在线播放| 亚洲综合久久久久久中文字幕| 老色鬼久久亚洲av综合| 在线观看日本中文字幕| 久久99视频精品| 欧美www网站| 亚洲色偷偷色噜噜狠狠99| 羞羞视频网站免费入口| 国产手机精品一区二区| 97色婷婷成人综合在线观看| 成人一级片在线观看| 久久天天躁狠狠躁夜夜躁2020| 欧美日韩精品久久久久| 免费一级一片一毛片| 股间白浊失禁跪趴老师| 国产成人19禁在线观看| 337p日本大胆欧美人术艺术精品 | 动漫美女被到爽流触手| 韩国一区二区视频| 国产白嫩美女在线观看| 67194线路1(点击进入)| 无翼日本全彩漫画大全全彩| 亚洲av极品无码专区在线观看| 波多野结衣教师系列5|