html5中文学习网

您的位置: 首页 > 网络编程 > ASP.NET » 正文

心所欲生案_.NET教程_编程技术

[ ] 已经帮助:人解决问题
要是有外部的元件支援,有一些西是 ASP 法到的,也就是生案 - 不管是表、幅告、或是的形器。幸的是,在 ASP.NET 中已改了 - 使用建的方法,案可以生以及能用最大限度的定能力送到 client 端,且很容易到。

使用本文章的原始程式必在 Webserver 安 Microsoft .NET Framework SDK。同我也假者 C# 程式有一定程度的。

生案

在感受到 ASP.NET 大力下,我做了一乏味的指令行程式,然後使用原始程式作我 ASP.NET script 的基。所不同的是指令行案存一案,而 ASP.NET script 他送到 client 端。

在,我的例程式做了什?就像一般常的,一始我使用一般喜用的 "Hello World" 程式,文字出成一案,然後案依目前所定的字型以及字型大小,生同大小的 "Hello World" 文字(因此,要生特大的像就法算)

下面的 Script (pagecounter.cs) 是典型的指令行程式: 忽略包裹在周的 class , 只有函式 Main行被呼叫,也就是我生案所在的程式。

using System;using System.IO;using System.Drawing;using System.Drawing.Imaging;public class CTestBitmapFunctionality{ public static void Main() {  Bitmap newBitmap = null;  Graphics g = null ;  try   {   Font fontCounter = new Font("Lucida Sans Unicode", 12);   // calculate size of the string.   newBitmap = new Bitmap(1,1,PixelFormat.Format32bppARGB);   g = Graphics.FromImage(newBitmap);   SizeF stringSize = g.MeasureString("Hello World", fontCounter);   int nWidth = (int)stringSize.Width;   int nHeight = (int)stringSize.Height;   g.Dispose();   newBitmap.Dispose();      newBitmap = new Bitmap(nWidth,nHeight,PixelFormat.Format32bppARGB);   g = Graphics.FromImage(newBitmap);   g.FillRectangle(new SolidBrush(Color.White),        new Rectangle(0,0,nWidth,nHeight));   g.DrawString("Hello World", fontCounter,         new SolidBrush(Color.Black), 0, 0);     newBitmap.Save("c://test.png", ImageFormat.PNG);  }   catch (Exception e)  {   Console.WriteLine(e.ToString());  }  finally   {   if (null != g) g.Dispose();   if (null != newBitmap) newBitmap.Dispose();  } }}

程式做了什?不管怎,果案 test.png 存在 drive c:

案如何生?了解原因,我必看一下原始。首先,案大小必是和要呈的文字字型 "Hello World" 大小一,因此,我先算文字大小,同目的,我使用一 size 1 x 1 的仿案,我算完成,我抓取案然後生一的大小案。

原始中有趣的一是 Graphics 物件。我要生像何需要物件呢? 理由是是我要去的案情境 (context) - 我可以在幕、印表以及使用案情境 - 正就是 Bitmap。案情境允我在任何行操作 (既是的)。

使用 DrawString,我在可以根白色背景 (使用 FillRectangle 生) 的方形格出文字 "Hello World"。案完成了,我必把它存到磁碟中。曾有自己案格式都知道是一件困的事,使用 GDI+ (Graphics Device Interface) 就不是如此 - 我只要使用一的命令就行了:

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

就了! 只要 ImageFormat.PNG 交成 ImageFormat.JPEG,你就能有 jpeg 的案。的使用案,就是我一直想要的。

在只是有例外理有待解:一些函式造成例外(例如,有足的生像)。好的程式者必能自行清除,我必理放 GraphicsBitmap - 而也就是我在 finally 所做的 (因他是被呼叫)。而在 finally 之後程式束。

理上,程式可以作,但在原始中,要它行,必先:

csc /R:System.DLL /R:System.Drawing.DLL pagecounter.cs

我可以生一 .EXE pagecounter.exe。注意:案在系安 Microsoft .NET framework 後才能行喔!

在 web server 上的工作

作指令行用程式行起相棒,但如果作 ASP.NET script 就必使用一些小技巧:

  • 可的文字 (例如,器)
  • 可的文字色
  • 可的背景色
  • 可的字型
  • 可的字型大小

如果有人感到有困的,你可以先看一下案的 ASP.NET script 案 (pagecounter.aspx) 的原始 原始。 我所必做的是加入一些理程式查送的。可是必改的最大部分。

另外必做的是案送到 client 端,而不是它入成一案。新部分如下:

MemoryStream tempStream = new MemoryStream();newBitmap.Save(tempStream,ImageFormat.PNG);Response.ClearContent();Response.ContentType = "image/png";Response.BinaryWrite(tempStream.ToArray());Response.End();

我只是案放入,然後送到熟悉的函式 BinaryWrite 是位元,同:我需要函式 ClearContent,因在 Script 的最上部分有 Import 指令送出空白列到 client 端,使得 PNG 效。

如果你有仔看一下 原始,注意到我已送所有可的作 querystring 。可能太,因此向我的人,我自己建了一看起舒一的表 (form),我就能各不同的值


〔〕案原先文字是德文,我在自己器上文字成中文,因此,下原始是使用德文,你必自己改成中文字。

ASP.NET page (pagecountertest.aspx) 更棒的是我可以在同一得案。 form 的 原始 已包含多 server 端的 ASP.NET 控制 (controls)。 意味著可作文章中的胃菜,在 ASP.NET 架中於 form 的理以及,有明。

在篇文章中我以速看案程式的一些特徵。於我的站, ASP.NET 架中在能提供 web page 程式者於 Windows 案程式完整的使用操作。在我可以 " 不到 " 句之後了。 Lh5HTML5中文学习网 - HTML5先行者学习网


Lh5HTML5中文学习网 - HTML5先行者学习网
Lh5HTML5中文学习网 - HTML5先行者学习网
(责任编辑:)
推荐书籍
推荐资讯
关于HTML5先行者 - 联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助