现在的位置: 首页 > 移动开发 > 正文

怎样在ASP.NET中随意创建图形信息

2020年06月01日 移动开发 ⁄ 共 1880字 ⁄ 字号 评论关闭

  如果没有一个外部组件的支持,在ASP中是不能动态创建图形的,不管它是一个图表,一个横幅或仅仅是一个图形计数器。可喜的是,这一点在ASP.NET中改变了。现在,我们只需要使用内置功能,就能够很容易动态创建图形,并向客户端发送具有最佳配置的图形。下面学步园小编来讲解下怎样在ASP.NET中随意创建图形信息?

  怎样在ASP.NET中随意创建图形信息

  用命令行程序创建图形

  在讨论一大堆ASP.NET代码之前,我们先执行一个简单的命令行程序做一个测试,然后使用这些源代码作为ASP.NET脚本的基础。实际上,两者的区别在于:命令行程序将图形保存在一个文件中,而ASP.NET脚本将图形直接发送到客户端。

  举例的程序做什么呢?按照惯例,我们从众所周知的“HelloWorld”程序开始,把这个文本信息输出到一个图形文件中,这个图形的大小要与当前选中的“HelloWorld”文本的字体和字号完全相同。

  下面的脚本pagecounter.cs是一个典型的简单命令行程序:如果忽略包围在其周围的必须的类代码,就只剩下程序运行时要调用的主函数了,这也正是生成图形的代码所在处:

  怎样在ASP.NET中随意创建图形信息

  usingSystem;

  usingSystem.IO;

  usingSystem.Drawing;

  usingSystem.Drawing.Imaging;

  publicclassCTestBitmapFunctionality

  {

  publicstaticvoidMain()

  {

  BitmapnewBitmap=null;

  Graphicsg=null;

  try

  {

  FontfontCounter=newFont(“LucidaSansUnicode”,12);

  //calculatesizeofthestring.

  newBitmap=newBitmap(1,1,PixelFormat.Format32bppARGB);

  g=Graphics.FromImage(newBitmap);

  SizeFstringSize=g.MeasureString(“HelloWorld”,fontCounter);

  intnWidth=(int)stringSize.Width;

  intnHeight=(int)stringSize.Height;

  g.Dispose();

  newBitmap.Dispose();

  newBitmap=newBitmap(nWidth,nHeight,PixelFormat.Format32bppARGB);

  g=Graphics.FromImage(newBitmap);

  g.FillRectangle(newSolidBrush(Color.White),

  newRectangle(0,0,nWidth,nHeight));

  g.DrawString(“HelloWorld”,fontCounter,

  newSolidBrush(Color.Black),0,0);

  newBitmap.Save(“c://test.png”,ImageFormat.PNG);

  }

  catch(Exceptione)

  {

  Console.WriteLine(e.ToString());

  }

  finally

  {

  if(null!=g)g.Dispose();

  if(null!=newBitmap)newBitmap.Dispose();

  }

  }

  }

  在任何情况下,执行上面代码后,就会生成下面的图形test.png,它将存放在C驱动器上:

  我们来仔细研究一下源代码,看看这个图形是如何创建的。关键一点是生成的图形必须与文本“HelloWorld”的字体和字号相同。因此,首先要计算文本的尺寸,为此我们使用了一个尺寸为1x1的虚拟图形。计算结束之后,再废弃这个虚拟图形并生成一个适当尺寸的图形。

  源代码中有一点很有趣,这就是Graphics对象。要创建一个位图时,用这个对象做什么呢?奥妙在于:这是可以向其中绘图的上下文环境。我们可以在屏幕上、打印机上和内存中使用一个图形上下文环境,准确地说就是一个位图。图形的上下文环境使我们能够在任何设备上进行绘图操作,甚至是在虚拟设备上。

  以上就是关于“怎样在ASP.NET中随意创建图形信息”的内容,希望对大家有用。更多资讯请关注学步园。学步园,您学习IT技术的优质平台!

抱歉!评论已关闭.