C#中关于GDI+输出的问题

2016-01-29 12:56 16 1 收藏

C#中关于GDI+输出的问题,C#中关于GDI+输出的问题

【 tulaoshi.com - ASP.NET 】

在.net Framework的框架中有很多操作各种图形的函数,包括:点,线,面等等,构成的各种各样的丰富的图象。
在这里我主要是介绍在.Net Framework中GDI+下的TEXT(文本)的操作。首先以一个小小的程序开始:
建立一个Windows应用程序
在窗体上添加一个Button控件 和 一个PictureBox控件.
在Button控件的事件中添加,如下代码:
SizeF textSize ;//定义一个SizeF的变量,而SizeF的描述:
//存储有序浮点数对,通常为矩形的宽度和高度。
Graphics g;
Brush myBrush ;//定义一个刷子。
Font myFont = new Font("Times new Roman", 80, FontStyle.Bold);
//定义要输出字体的样式和大小
g = pictureBox1.CreateGraphics();//CreateGraphics 方法
也可以使用某控件或窗体的 CreateGraphics 方法来获取对 Graphics 对象的引用,该对象表示该控件或窗体的绘图表面
g.Clear(Color.White);// 清除整个绘图面并以指定背景色填充。
string str = "Kevin";//要输出的文本
textSize = g.MeasureString(str,myFont);// 测量用指定的 Font 对象绘制的指定字符串。
myBrush=new HatchBrush(HatchStyle.DashedUpwardDiagonal,Color.Blue,Color.White);
//这里使用的是HatchBrush画刷。
g.DrawString(str,myFont,myBrush,(pictureBox1.Width/4),(pictureBox1.Height/2));

//输出文本


当然如果将上述代码在变一下的话。就是另外一番风景啊~~

SizeF textSize ;
Graphics g;
Brush myBrush;
Single xLocation,yLocation;
Matrix myMatrix;
Font myFont = new Font("Times new Roman", 80, FontStyle.Bold);
g = pictureBox1.CreateGraphics();
g.Clear(Color.White);
string str = "Kevin";
textSize = g.MeasureString(str,myFont);
xLocation = (pictureBox1.Width/4)-5;
yLocation =(pictureBox1.Height/2-5);
g.TranslateTransform(xLocation,yLocation);
myMatrix = g.Transform;
myMatrix.Shear(1,0);
g.Transform = myMatrix;
myBrush=new HatchBrush(HatchStyle.DashedUpwardDiagonal,Color.Blue,Color.White);
g.DrawString(str,myFont,myBrush,0,0);


SizeF textSize ;
Graphics g;
Brush myBrush = Brushes.Blue;
Brush backBrush= Brushes.Gray;
Single xLocation,yLocation;
Font myFont = new Font("Times new Roman", 80, FontStyle.Bold);
g = pictureBox1.CreateGraphics();
g.Clear(Color.White);
string str = "Kevin";
textSize = g.MeasureString(str,myFont);
xLocation = (pictureBox1.Width/4)-5;
yLocation =(pictureBox1.Height/2-5);
g.DrawString(str,myFont,backBrush,(pictureBox1.Width/4),(pictureBox1.Height/2));
g.DrawString(str,myFont,myBrush,xLocation,yLocation);


这就是我想给各位的一个非常简单的操作文本程序。

来源:https://www.tulaoshi.com/n/20160129/1488204.html

延伸阅读
这篇文章我想复习下C#中的基元类型。虽然搞清楚基元类型的知识并不会是你工作的必要条件,但做为一个搞技术的人来说还是非常有必要的。起码可以对付有些显得比较BT的面试题,哈哈!         关于什么是基元类型,我想并不是每一位开发者都清楚的,有部分的朋友只知道怎么在工作中应用它(例如int,string)。如果一...
http://www.asp888.net 豆腐技术站 我们以前在C++中曾经知道C++中有函数重载的概念,现在在ASp.Net的C#中我们仍然可以使用函数重载的 概念和定义: 假设我们在程序中定义了两个函数:String test(String str1) 而后 int test1(int i),他们的内容都是很 简单的功能 String test(String str1){ Response.Write("函数重载测试,这个是String函数"...
这可不是我写的,我只是看到觉得不错,才贴的哦。 : 不要以为这个题目是耸人听闻,但就目前的形势来看c/c++是需要退出舞台或者说的婉转一点是需要更新换代了. 我想在未来的一两年里,作为程序员等级评判的标准之一c/c++(不管是mfc还是bcb)将会让位给三种编程语言,1.sun的java2.windows平台上的c#3.xml 为什么这么说呢,我认为最大理由是目前...
有些书上也称“代表”或“委托”。      C#中取消了指针的概念。对指针恋恋不舍的程序员可以有两种解决方法:声明“非安全”(unsafe)代码段然后在其中使用指针或者使用C#的一个引用类型——“代理”(delegate)。“代理”相当与C中的函数指针原型,区别是C#是类型安全 的。
我在开始学习c#。下面一个程序的两个版本怎么结果不一样? 正确.version using System;class Test{ static void divide(int a,int b,out int result,out int remainder){ result=a/b; remainder=a%b; } static void Main(){ for(int i=1;i 运行结果:1/1=1,1%1=01/2=0,1%2=11/3=0,1%3=11/4=0,1%4=11/5=0,1%5=11/6=0,1%6=11/7=0,1%7=11/8=0,1%...