知识大全 VC++.NET中使用GDI+创建特效字体

Posted

篇首语:最怕一生碌碌无为,还安慰自己平凡可贵。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 VC++.NET中使用GDI+创建特效字体相关的知识,希望对你有一定的参考价值。

VC++.NET中使用GDI+创建特效字体  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

来自于微软 NET技术的C++托管扩展所包含的GDI+技术功能十分强大 本文将介绍如何使用GDI+的画刷来绘制文本   一 使用画刷绘制文本的基本技术  本文所带的例子程序允许用户定义所要显示的文本 字体尺寸 显示文本所用的画刷(网格画刷或渐变画刷)以及绘制文本的颜色等 例子代码下载 GDIPlusTextWithBrushes zip  下面是GDI+中使用渐变画刷或网格画刷绘制文本的基本步骤    在控件的绘制(Paint)事件中添加一个事件处理函数   在这个处理函数中进行绘制文本的相关处理 这样控件才能正确地进行重绘    获取一个图形(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;    实例化一个字体对象  在字体类的 个构造函数中 最基本的一个构造函数只需要你提供字体名及字体的大小 在下面的例子中 创建了一个 点 Times New Roman 类的常规字体 using namespace System::Drawing; Font* font = new Font(S Times new Roman FontStyle::Regular);   测量将被绘制的文本尺寸  为了绘制文本需要使用Graphics::MeasureString方法来测量文本尺寸 可以使用Graphics::MeasureString方法来完成这个任务 这个方法需要提供被测量的文本及字体对象 并返回SizeF结构对象 这个结构包含了将要进行绘制文本的尺寸 SizeF textSize = g >MeasureString(S My Sample Text font);

  

   实例画刷对象  可以使用各种各样的画刷进行绘制文本 包括网格画刷 线性渐变画刷 路径渐变画刷 实体画刷及纹理画刷等 只是在创建各个不同的实例画刷时传递的参数有一些小小的不同而已 对各种画刷进行探讨不是本文的内容 在本文的实例中只使用两种画刷(网格画刷及线性渐变画刷)

// HatchBrush exampleBrush* brush = new HatchBrush(HatchStyle::Cross Color::Black Color::Blue); // LinearGradientBrush exampleRectangleF* rect = __nogc new RectangleF(PointF( ) textSize);brush= new LinearGradientBrush(*rect Color::Black Color::Blue LinearGradientMode::ForwardDiagonal);   (选项)填充背景  为了使应用程序有特色 可以在绘制文本前对背景进行颜色填充 这有两个标准的方法 较简单的方法是调用Graphics::Clear方法并定义将使用的颜色 但是有时需要更高级的控制 这时候需要使用Graphics::FillRectange方法   Graphics::FillRectange方法允许开发人员规定所选择的画刷对象并定义确切的矩形坐标位置 关于画刷对象 可以使用实例化的自定义画刷或者是系统画刷SystemBrushes 系统画刷定义了若干属性成员 它们是实心画刷 各自用来表现窗口的不同的元素 包括激活的边框及标题条等 // Use the Windows defined color for controls // and explicitly state the rectangle coordinatesg >FillRectangle(SystemBrushes::Control picText >Left picText >Top picText >Right picText >Left picText >Bottom picText >Top);// Color the entire drawing surface using Whiteg >Clear(Color::White);   绘制文本  一旦将所有的GDI+对象实例化后 下面所需要做的事就是调用Graphics::DrawString方法 下面的例子使用了这个方法 在这个方法里规定了需要显示的文本 画刷和字体及显示文本的位置 // Center the text on the drawing surfaceg >DrawString(txtToDisplay >Text font brush (picText >Width textSize Width) / (picText >Height textSize Height) / ); cha138/Article/program/net/201311/13459

相关参考

知识大全 .Net程序开发中较为隐蔽的GDI泄露探析收藏

.Net程序开发中较为隐蔽的GDI泄露探析收藏  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  最

知识大全 .Net程序开发中一个较为隐蔽的GDI泄露探析收藏

.Net程序开发中一个较为隐蔽的GDI泄露探析收藏  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 用VB.NET绘制GDI图形

用VB.NET绘制GDI图形  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!下面的例子通过重载For

知识大全 GDI+编程的10个基本技巧

GDI+编程的10个基本技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  创建绘图表面创建绘图

知识大全 Visual Basic.NET和GDI+共创图标编辑器

VisualBasic.NET和GDI+共创图标编辑器  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧

知识大全 VC#.Net中浏览Crystal Report

VC#.Net中浏览CrystalReport  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!&nb

知识大全 VC# .Net中使用Crystal Report(一)

VC#.Net中使用CrystalReport(一)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 VC# .Net中使用Crystal Report(二)

VC#.Net中使用CrystalReport(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

知识大全 VC++.NET开发环境整合技巧

VC++.NET开发环境整合技巧  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  主窗口内的每一个

知识大全 用VC.NET制作启动屏幕的新方法

用VC.NET制作启动屏幕的新方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在利用VC+编