实用ASP组件介绍文章来源:网络作者 加入时间:2006-3-6 浏览次数:1212什么叫活动服务器组件(Active Server Compontents)?组件是基于Activex技术的代码片断,通过指定接口提供指定的一组服务,组件供给客户端(Clients)在运行时候请求的对象。你可以理解成组件是一种程序,通过调用这种程序,你可以实现你在ASP程序中无法实现或者很难实现的功能,组件是一种很好的代码重用方法。 我们可以运用Active Server Pages设计制作动态、交互的Web页面,但是一旦你开始着手工作,参与一些实际工作的时候,你会发现asp在某些方面功能不强,甚至不借助服务器端组件就很难实现某些功能,例如:数据库操作(我们通常使用ADO,ADO就是一个组件),邮件功能,文件系统操作,图形功能...但是幸运的是我们可以找到很多组件来提高ASP编程应用能力,在下面的内容我们将系统的介绍有关的组件,在下一章里面我们还将详细介绍如何亲自动手编写组件。 9.1 活动服9.2 务器组件的调用方法 服务器组件和ASP内置对象应用程序(Application)、会话(Session)、请求(Request)、响应(Response)和服务器对象不同,不能直接使用,而必须首先被实例化。 CreateObject函数创建一个对象并返回一个对对象的引用。这个函数的语法如下: Set objVar=Server.CreateObject(class) Class 表示创建什么样的对象 Class的格式如下显示: application.className 其中application是应用程序的名字,className是这种对象的名字。一个application可以由一个或者多个对象组成。他们可以在内部之间相互调用的。 例如 Set myConnection = Server.Createobject(“AdoDB.Recordset“) 注意: 不能这样创建的Asp内建对象的实例,如下面的例子将导致一个错误 <% Set Response = Server.CreateObject(“Response“) %> 你可以就通过在你的ASP脚本中使用活动服务器端组件,创建动态,交互的Web页面。 9.3 IIS4活动服9.4 务器组件 Windows NT 4.0 Option Pack安装之后系统已经包含了很多可以选用的活动服务器组件。这些组件你可以在Visual InterDev 6.0的ToolBox工具箱上找到。下面这个表列出了这些组件的名称和功能。不过请注意:虽然这些内容列在工具箱上面,但是不等于这些组件已经安装在你的服务器上了。因为有一些组件是可选择安装的。比如Index Server Query. 活动服务器组件名称 描述 ADO Command, ADO Connection,ADO Recordset 使用using ActiveX™ Data Objects (ADO),提供数据库访问能力 Ad Rotator 在网页可以放置一个条状广告 Browser Capabilities 确定访问这个网站的浏览器性能、类型及版本 Content Linking 创建一个内容列表并在网页之间连接 Directionary 存贮一个名字/数值对应集合 My Info 维护个人信息例如网站管理员的名字、地址等等 CDONTS NewMail Collaboration Data Objects for NTS (CDONTS),提供邮件功能(需要安装和配置SMTP server) FileSystemObject 提供访问文件系统的方法(但是文件操作不提供读写两进制文件的功能,而只支持文本文件的读写) Index Server Query Index Server Utllity 可以让你访问索引服务器(Index Server) MSMQ Query MSMQ QueueInfo MSMQ Message MSMQ MailEmail 提供访问MSMQ(Microsoft Message Queue)功能的方法 表9.2-1 IIS4活动服务器组件列表 以上组件Windows NT 4.0 Option Pack的产品文档中均有详细解释。 如果你安装了Visual InterDev 6.0和MSDN Library Visual Studio 6.0,那么更可以方便的查询到有关资料 在这里我们就不再详细的介绍这方面的内容了。在后面的内容里面,我们将介绍更丰富的组件。 9.5 实用组件介绍 这里我们将对许多实用的组件做一个介绍,帮助大家解决实际开发中所使用的问题。 通常我们使用asp开发系统都需要实现这样的功能: Email发送 Internet上用asp开发应用,一般都是面向用户的,比如需要注册用户,这样就可能需要把用户密码发送到用户的email信箱里面去。另外建立邮件列表,文章转发,密码提醒等等功能都要asp实现email发送。 动态图形生成 我想可能最熟悉的动态web图形应用应该是计数器了,如果是用几个图形拼成计数器图形,我想可能就不太专业,可以用图形组件拼成一个完整图形。另外可以使用图形组件生成某些统计图形。例如:饼图,条形图。我想我们通常所见的程序如:网上调查就常以饼图来直观的显示结果。我们还可以使用曲线图形或柱状图形来分析某些数据(比如网站流量分析) 文件上传 文件上传也是一个急需的组件。使用文件上传可以实现客户端和服务器端的文件/数据交换。通常的用途是上传图片或word、excel文件,然后就可以入库,以便系统使用。笔者开发过一个新闻系统就使用了文件上传系统上传新闻图片,从而实现了web在线新闻编辑。 9.5.1 Email组件 9.5.1.1 W3 Jmail组件 在一次浏览微软新闻组的时候,看到有人在表扬Jmail。于是我就去下载了一个尝试,发现这个组件做得确实十分好。于是就拿来实现了BBS程序的贴子转发功能。在这里将介绍这个组件的使用方法。 W3 Jmail组件介绍 W3 Jmail是一个smtp组件,利用它可以发送邮件,支持html格式邮件。你可以访问主页:http://tech.dimac.net 下载这个组件。w3 Jmail 发送邮件速度快,功能丰富,并且是免费的。 JMail 使用环境 Webserver (IIS4/PWS4) Microsoft Windows NT / Windows 98 / Microsoft Windows 95 + Winsock 2.0 (Winsock 2.0可以去微软站点下载: http://www.microsoft.com/windows/downloads/bin/W95ws2setup.exe) 3.60版本的JMail的特性 Attachments 附件 Return Receipt发信回执 Detailed logging capabilities 详细日志能力 Priority settings 优先级设定 MIME with BASE64, UUEncode and Quoted-Printable Encoding 邮件编码设置 Queued mailings without separate NT service. 邮件队列发送,无需单独的NT服务 Unlimited redundant servers 没有限制的多余server(SMTP服务器) Blind Carbon Copy (BCC) 密送 Carbon Copy (CC) 抄送 Urgent flagging 紧急标志 US ASCII 和 ISO-8859-1 编码 UUEncoding UUEncode 编码 X-Headers and custom headers 自定义邮件头 MS Mail and Exchange priority headers. 微软Mail和Exchange优先权头 Internal MX lookup with MX priority and redundancy , 带MX优先权和冗余的Internet MX查找 JMail支持的日志功能是非常有用的。特别是当你在发送邮件的时候遇到困难的时候,就可以察看日志内容分析原因。 JMail 已经检查了下列2000年问题测试 2000-01-01 Bug - OK 2000-02-29 Bug - OK 2000-04-01 Bug - OK (Found in MS VCRT) JMAIL使用16位精度表示年,所以日期范围限制在 -32767~ 32768 Jmail 组件参考说明 组件使用方法: set oVar=Server.CreateOject(“jmail.smtpmail”) 下表列出了Jmail的属性 编号 属性名 类型 版本 用途 使用举例 1 Body String v3.0 信件体,正文,使用AppendText追加内容 JMail.Body = “Hello world“ 2 Charset String v3.0 字符集,缺省为“US-ASCII“ 简体中文是gb2312 Jmail.Charset = “US-ASCII“ 3 ContentTransferEncoding String v3.0 指定内容传送时的编码方式,缺省是“Quoted-Printable“(例如ChinaASP=C2=DB=CC=B3 代表ChinaASP论坛,等于号后面的是gb码的16进制代码) Jmail.ContentTransferEncoding = “base64“ 4 ContentType String v3.0 信件的contentype. 缺省是“text/plain“,但是可以设置为其他你想要的类型。如果你以HTML格式发送邮件, 改为“text/html“即可。 JMail.ContentType = “text/html“ 5 DeferredDelivery Date v3.0 设置延期发送. 如果邮件服务器支持的话,消息到了这个时间才会发送 (Javascript)Jmail.DeferredDelivery = new Date( 2000, 02, 17 ).getVarDate(); 6 Encoding String v3.0 这个属性可以用来改变附件编码方式(缺省是“base64). 可以选择使用的是“base64“, “uuencode“ or “quoted-printable“ JMail.Encoding = “base64“ 7 ErrorCode Integer v3.0 如果JMail.silent设置为true,ErrorCode包含的是错误代码 Response.Write( JMail.ErrorCode ); 8 ErrorMessage String v3.0 如果JMail.silent设置为true,包含的是错误信息 Response.Write( JMail.ErrorMessage ); 9 ErrorSource String v3.0 如果JMail.silent设置为true,包含的是错误的来源 Response.Write( JMail.ErrorSource ); 10 ISOEncodeHeaders String v3.0 是否将信头编码成iso-8859-1字符集. 缺省是true JMail.ISOEncodeHeaders = false 11 Lazysend Boolean v3.0 这个属性指定Jmail是否一直等到mail发送了然后返回,或者缓冲这条消息然后在后台发送。然而设置了这个属性,你就不能控制错误信息。 注意:如果选择了这个选项,属性ServerAddress将无效,lazysend将通过dsn查询决定邮件服务器, 在一些设置里面,这可能有问题。 JMail.LazySend = true; 12 Log String v3.0 Jmail创建的日志,如果loging属性设置为true Response.Write( JMail.Log ); 13 Logging String v3.0 是否使用日志 JMail.Logging = true 14 MailDomain String v3.0 改写发送到邮件服务器的EHLO/HELO命令 JMail.Maildomain = “hello.world.com“ 15 MimeVersion String v3.0 指定mime版本。缺省是“1.0“ JMail.MimeVersion = “1.0“ 16 Priority Integer v3.0 优先级. 范围在1-5之间 1 高优先级. 有些邮件程序称之为紧急 2 也是高优先级 3 普通优先级 4 低优先级 5 最低的优先级 Jmail.Priority = 3 17 Recipients String v3.0 只读属性,返回所有收件人 Response.Write( ““ + JMail.Recipients + ““ ); 18 ReplyTo String v3.0 指定一个可选的回信地址 Jmail.ReplyTo = “president@dimac.net“ 19 ReturnReceipt Boolean v3.0 指定是否发件人需要一个回复收据. 缺省是false Jmail.ReturnReceipt = true 20 Sender String v3.0 指定发件人的邮件地址 Jmail.Sender = “batman@dimac.net“ 21 SenderName String v3.0 指定发件人的姓名 Jmail.SenderName = “Bat man“ 22 ServerAddress String v3.0 指定邮件服务器的地址。可以指定多个服务器,用分号点开。可以指定端口号。 如果serverAddress保持空白,Jmail会尝试解决远程邮件服务器,然后直接发送到服务器上去。 Jmail.ServerAddress = “mail.mydom.net; mail2.mydom.net:2500“ 23 Silent Boolean v3.0 如果设置为true,JMail不会抛出例外错误. JMail.execute() 会根据操作结果返回true或false Jmail.silent = true 24 SimpleLayout Boolean v3.0 设置为true,减少Jmail产生的header信头 Jmail.SimpleLayout = true 25 Subject String v3.0 设定消息的标题 Jmail.Subject = “Dimac rocks big time!“ 26 UsePipelining Boolean v3.0 Overrides if Jmail should use pipelining on a server that supports it. Jmail.Pipelining = false 表9.3.1.1-1 Jmail属性列表 下表列出了Jmail的方法 编号 方法 版本 用途 使用举例 1 AddAttachment( FileName, [ContentType] ) v30 添加文件附件到信件 JMail.AddAttachment( “c:\\autoexec.bat“ ); 2 AddCustomAttachment( FileName, Data ) v3.0 添加自定义附件. This can be used to attach “virtual files“ like a generated text string or certificate etc. JMail.AddCustomAttachment( “readme.txt“, “Contents of file“ ); 3 AddHeader( XHeader, Value ) v3.0 添加用户定义的X-header到message JMail.AddHeader( “Originating-IP“,“193.15.14.623“ ); 4 AddNativeHeader( Header, Value ) v3.0 添加信头 JMail.AddNativeHeader( “MTA-Settings“, “route“ ); 5 AddRecipient( Email ) v3.0 增加收件人 JMail.AddRecipient( “info@dimac.net“ ); 6 AddRecipientBCC( Email ) v3.0 增加密送收件人 JMail.AddRecipientBCC( “someone@somedomain.net“ ); 7 AddRecipientCC( Email ) v3.0 增加抄送收件人 JMail.AddRecipientCC( “someone@somedomain.net“ ); 8 AddRecipientEx( Email, Name ) v3.0 增加一个带名字的收件人 JMail.AddRecipientEx( “info@dimac.net“, “Dimac INFO“ ); 9 AddURLAttachment( bstrURL, bstrAttachAs, [bstrAuth] ) v3.0 下载并添加一个来自url的附件. 第二个参数“AttachAs“, 被用来指定信件收到后的文件名. 第3个可选参数是用来可选的WWW-鉴定. JMail.AddURLAttachment( “http://download.dimac.net/jmail/jmail.exe“, “jmail.exe“ ) 10 AppendBodyFromFile( FileName ) v3.0 将一个文件内容追加到正文后 JMail.AppendBodyFromFile( “c:\\mytext.txt“ ); 11 AppendText( Text ) v3.0 追加信件的正文内容 JMail.AppendText( “Text appended to message Body“ ); 12 ClearAttachments() v3.0 清除附件列表 JMail.ClearAttachments(); 13 ClearCustomHeaders() v3.0 清除所有自定义的信头 JMail.ClearCustomHeaders(); 14 ClearRecipients() v3.0 清除收件人列表 JMail.Close(); 15 Execute() :Boolean v3.0 执行邮件的发送 JMail.Execute(); 16 ExtractEmailAddressesFromURL( bstrURL, [bstrAuth] ) v3.0 从一个url下载和添加email地址 JMail.ExtractEmailAddressesFromURL( “http://duplo.org/generateEmailList.asp“ ); 17 GetMessageBodyFromURL( bstrURL, [bstrAuth] ) v3.0 清除message的正文,并用url的内容替换。Contenttype 会自动设置成URl的contentyp。第二参数(login and password)是可选的。 JMail.GetMessageBodyFromURL( “http://duplo.org/“, “login:password“ ) 18 LogCustomMessage( Message ) v3.0 将用户自定义消息加入Jmail日志. 只有属性loging设置为true时,这项功能才能起作用 JMail.LogCustomMessage( “Hello world“ ); 表9.3.1.1-2 Jmail方法列表 程序举例: <html> <head> <title>your Title </title> <body> <% Set JMail = Server.CreateObject(“JMail.SMTPMail“) ‘ 设置serverAddress为我本地的smtp server 地址 JMail.ServerAddress = “mail.yourdomain.com:25“ ‘ 发件人地址 JMail.Sender = “myemail@mydomain.com“ JMail.Subject = “邮件标题“ ‘ 收件人信箱,请注意这里没有使用等号 JMail.AddRecipient “mum@any.com“ JMail.AddRecipient “dad@some.com“ ‘ 属性body可以写也可以读 ‘ 如果你希望给body追加文本,你可以使用 ‘ JMail.Body = JMail.Body & “Hello world!“ ‘ 或者你可以使用JMail.AppendText “Hello World!“ ‘JMail.Body = “Here you go. Your request has been approved“ &_ ‘“and the program is attached to this message“ ‘ 信件的紧急程度 ‘ 1 - highest priority (Urgent) 急件 ‘ 3 - normal 普通 ‘ 5 - lowest 最低程度 JMail.Priority = 1 ‘ 发件人IP地址 JMail.AddHeader “Originating-IP“, Request.ServerVariables(“REMOTE_ADDR“) ‘ 请注意:IUSR_??? 要有访问的权限 JMail.AppendBodyFromFile “e:\mail\standard_footer.txt“ JMail.AddAttachment “e:\products\MyProduct.exe“ ‘ 发送邮件 JMail.Execute %> <center> 邮件发送到你的邮箱 (<%=request.form(“email“)%>). </center> </body> </html> 但是上面的例子存在这样的问题:由于邮件使用英文编码(缺省的),所以用outlook/outlook express收,看到的缺省页面中文是乱码,必须手工设置为简体中文(GB2312),才能正常阅读。其实我们只要在上面的程序Jmail.execute之前加上 Jmail.CharSet=”gb2312”,那么邮件的编码就是中文了。 还有一个问题是如何发送html格式的邮件。下面是发送html格式邮件的例子 Set JMail = Server.CreateObject(“JMail.SMTPMail“) JMail.Charset = “gb2312“ JMail.ContentType=“text/html“ JMail.ServerAddress =”mail.yourhost.com:25” JMail.Sender = “yourname@yourhost.com” JMail.Subject = “html格式的邮件” JMail.AddRecipient “myname@myhost.com” JMail.Body = “<html><body><p>你好,谢谢你访问我们的网站” & _ “<a href=’http://www.yourHost.com’ target=_blank>yourHost</a>”& _ ”</p></body></html>” JMail.Priority = 1 JMail.AddHeader “Originating-IP“, _ Request.ServerVariables(“REMOTE_ADDR“) JMail.Execute set jMail=nothing 9.5.1.2 ASP Email组件 aspEmail是一个“免费“的服务器组件,它提供通过smtp发送邮件的方法。 这个组件支持多个附件,多个收件人,抄送,密送,和回复。 除了基本的功能是免费使用的之外,另外一些功能需要注册:队列邮件发送、嵌入式图片和Quoted-printed格式。更多信息你可以在aspEmail的主页上获得:http://www.aspemail.com/ 系统需求 一般配置需求: Windows 95/98 或 Windows NT 4.0+ 还要一个外部的SMTP服务程序 特殊配置需求: Internet Information Server 3.0 + 和 Active Server Pages, 或 Personal Web Server (any version) 和 Active Server Pages, 或 Visual Basic, Visual C++, 或其他任何支持COM组件开发的开发环境。 主页:http://www.aspemail.com/ 下载:http://www.aspemail.com/download.html 组件注册: 在命令行执行下面的命令(你可以在MS-DOS命令行输入,也可以在开始菜单/运行中输入): C:\regsvr32 c:\AspEmailDir\AspEmail.dll 下表列出了aspEmail的属性 编号 属性名 类型 说明 1 Host String 必须设定的属性。用来发送邮件的Smtp服务器的internet地址。 Mail.Host = “mail.mycompany.com” 2 Port Integer Smtp服务器的端口地址,缺省是25 3 From String 必须设定的属性,发件人地址 4 FromName String 发件人的名字 5 Subject String 邮件的主题 6 Body String 邮件的内容 7 IsHTML Boolean 缺省是False, 如果设置为True,AspEmail会设置邮件的CONTENT-TYPE为TEXT/HTML 8 Priority Integer 邮件优先级,合法的值有: 高 3-正常 5-低 0-缺省(未指定优先级) 9 Helo String 缺省值是”AspEmail”。在SMTP会话开始的时候,这个字符串被HELO命令发送。 SMTP客户端用来对Smtp服务器标记它的域名 10 ContentTransferEncoding String 缺省”7bit”。为邮件体指定”内容传输编码” MIME头。其他合法的值还有”8bit” 和 “quoted-printable”。如果你设定为”quoted-printable”,AspEmail会自动转化信件体为RFC-2045规定的Quoted-Printable格式。 注意:这是需要额外费用的特性 11 CharSet String 缺省为 “ISO-8859-1” 。指定MIME头Content-type的charset部分。 注意:这是需要额外费用的特性 12 Expires Date 返回这个组件需要额外费用的特性试用的过期日期。如果一个合法的注册键已经安装了,则返回9/9/9999,如果这个注册表给破坏或丢失的话。返回为0(显示为12:00AM) 表9.3.1.2-1ASP Email组件的属性 下表列出了ASP Email的方法 编号 方法 参数 说明 1 AddAddress (Email As String, Optional Name ) 收件人列表增加一个邮件地址,可以加一个相应的全名。 2 AddCC (Email As String, Optional Name ) 抄送收件人列表增加一个邮件地址,可以加一个相应的全名。 3 AddBCC (Email As String, Optional Name ) 密送收件人列表增加一个邮件地址,可以加一个相应的全名。 4 AddReplyTo (Email As String, Optional Name ) 回复收件人列表增加一个邮件地址,可以加一个相应的全名。 5 AddAttachment (Path as String) 增加一个附件,path是文件的路径 6 AddEmbeddedImage (Path As String, ContentID As String) 在信件体内增加一个内嵌图片,path是字符串,ContentID是一个没有空格的字符串,例如:”My-Image”,这个字符串将在body HTML里面像这样被应用: <IMG SRC=“cid:My-Image“> 或 <BODY BACKGROUND=“cid:My-Image“> 注意:这是需要额外费用的特性 7 AppendBodyFromFile (Path as String) 从Path参数指定的一个text文件或html文件中获取数据添加到body属性上 8 Send as Boolean 无 发送邮件。 9 SendToQueue as Boolean ( Optional Path = ““) 将邮件发送到一个邮件队列中并立即返回。需要EmailAgent服务在运行(EmailAgent是一个另外的程序,在aspEmail主页上可以下载)。Path参数指定邮件被张贴到的邮件队列的路径。如果path参数被忽略,则采用注册表内EmailAgent设置的参数。 注意:这是需要额外费用的特性 10 SendEncrypted (Msg As CryptoMessage) 以S/MIME格式发送一个加密的邮件。 需要AspEncrypt组件支持。 AspEncypt主页:http://www.aspencrypt.com/task_mail.html 11 SendSigned (Msg As CryptoMessage) 以S/MIME格式发送一个数字签名的邮件。 12 SendSignedAndEncrypted (Msg1 As CryptoMessage, Msg2 As CryptoMessage) 发送一个邮件。该邮件先试数字签名,然后再加密的。 13 Reset 清空所有地址列表,所以一个新邮件才能够发送。 14 ResetAll 和Reset一样功能,另外还重置所有属性的值。 表9.3.1.2-2aspEmail方法的属性 调用举例: 在下面的例子里面 发送一份text格式的mail,并放置了一个图片的附件。 <% Set Mail = Server.CreateObject(“Persits.MailSender“) Mail.Host = “smtp.smtp-server.com“ ‘ 指定smtp服务器 Mail.From = “myname@myhost.com“ ‘ 指定发件人邮件地址 Mail.FromName = “VeryHotCakes Sales“ ‘ 指定发件人的名字 Mail.AddAddress “anyone@yourhost.com“, “某某先生“ Mail.AddAddress “anyone2@yourhost.com“ ‘ 收件人名字可选 Mail.AddReplyTo “xyz@xyz.com“ Mail.AddAttachment “c:\images\book.gif“ Mail.Subject = “感谢你定购本公司出版的书籍!“ Mail.Body = “亲爱的客户:“ & Chr(13) & Chr(10) & _ “感谢你的热心关怀.“ On Error Resume Next Mail.Send If Err <> 0 Then Response.Write “Error encountered: “ & Err.Description End If %> AspEmail有一个吸引人的功能是:可以实现带内嵌图片html格式的邮件。 下面的例子使用文件margin.gif作为邮件的背景。 ... Mail.Body = “<HTML><BODY BACKGROUND=““cid:My-Background-Image““>...</BODY></HTML>“ Mail.AddEmbeddedImage “c:\aspemaildir\margin.gif“, “My-Background-Image“ 不过如果要使用这项功能没有试用期限制,需要支付额外的费用。 AddEmbeddedImage 有两个参数:指向图片文件的全路径和一个 Content ID,Content ID是一个没 有空格的字符串,body HTML像这样应用:“cid:<Content ID>“ 在上面的例子里面我们使用Content ID “My-Background-Image“,作为body 标记的一个背景属性被 引用。我们可以使用同样的方法在邮件体内用img标记嵌入一个图像: Mail.Body = “<HTML>....<IMG SRC=““cid:My-Company-Logo““>...</HTML>“ Mail.AddEmbeddedImage “c:\aspemaildir\logo.gif“, “My-Company-Logo“ 为了使得你编写的脚本有更多的可读性,你可以把邮件体的内容放到一个单独的文件中,然后可以 使用AppendBodyFromFile方法将内容倒入到body属性中,AppendBodyFromFile接受包含邮件内容的 text文件或html文件的全路径。 <!-- File messagebody.html--> <HTML> <HEAD> <STYLE>BODY { COLOR: #427d64; FONT-FAMILY: “Arial“; FONT-SIZE: 12pt; MARGIN-LEFT: 8em } </STYLE> </HEAD> <BODY BACKGROUND=“cid:My-Background-Image“> <H2>Thank you for Shopping At Our Online Store!</H2> .... </BODY> </HTML> 要使用这个文件作为信件体,使用如果代码: Mail.AppendBodyFromFile “c:\aspemaildir\messagebody.html“ Mail.AddEmbeddedImage “c:\aspemaildir\margin.gif“, “My-Background-Image“ AppendBodyFromFile方法可以用来替代body属性试用,或者关联起来使用 9.5.2 动态图形组件 9.5.2.1 AspImage组件 关于AspImage ASPImage可允许你从asp中随意创建和修改图片。你可以利用这个组件,创建自己的动态图形。 AspImage包括以下特性: 创建动态GIF 生成GIF(仅指RLE编码,不支持载入GIF)、JPG,PNG和BMP格式的图片 创建和修改图像 渐进填充 支持rectangle(矩形画图),arc(弧形)和circle(圆)等画图方法 切割,抽取,修改大小和旋转图形 按钮,变暗,加亮和其他效果 从OLE变量或其他AspImage对象中载入图像 支持response.binarywrite ASPImage的安装 将dll文件,拷贝到一个子目录,例如NT的目录\winnt\system32,win95/98的目录\windows\system. 注册dll文件,命令行将当前目录换到该目录,然后键入: regsvr32 aspping.dll regsvr32在windows系统目录可以找到 ASPImage的使用说明 组件使用方法:set oVar=Server.CreateOject(“AspImage.Image”) 下表列出了ASP Image的属性 编号 属性 描述 举例 1 AntiAliasText 该属性允许你在图片中建立无锯齿文本,默认值为False Image.AntiAliasText = True 2 AutoClear 默认值为真。一旦图片保存后,现有图片将被清除。如将AutoClear设置为False,图片保存后仍可以保留现有版本,对其进行处理。 Image.AutoClear = false 3 AutoSize 确定当图片被拖动到现有坐标之外时是否将该图片剪切到合适大小。该属性为真时,图片将配合要求自动增大。为假时,拖动操作将被剪切到合适现有图片的大小。 Image.AutoSize = False 4 BackgroundColor 整型数,用来指定背景色。 Image.BackgroundColor = vbWhite 5 Bold True or false. 指定字体是否加粗。 Image.Bold = True 6 BrushColor 用以指定格式刷的颜色(1.8以上版本适用,使用格式刷之后背景色失效) Image.BrushColor = VbRed 7 BrushStyle 用来指定格式刷的刷笔样式. Value Type Description 0 Solid 填充方式 1 Clear 清除方式 2 Horizontal 水平方向 3 Vertical 垂直方向 4 FDiagonal 45度自左到右斜向下 5 BDiagonal 45度自左到右斜向上 6 Cross 水平和垂直交叉方式 7 DiagCross 45度交叉方式 8 Error 用于记录在调用各种方法的过程中可能出现的错误信息。 Response.Write “Error: “ & Chart.Error 9 Expires 如果使用的ASPImage组件是测试版或beta版,该属性返回该组件失效日期。 Response.Write “Component Expires: “ & Image.Expires 10 FileName 指定用SaveImage方法保存文件时文件的绝对路径。 Image.FileName = “d:\inetpub\wwwroot\images\abc.jpg“ 11 FontColor 整型值,指定字体的颜色。 Image.FontColor = vbRed 12 FontName 字符型,指定字体名称。 Image.FontName = “MS Sans Serif“ 13 FontSize 整型值,指定字体的大小。 Image.FontSize = 12 14 Image 该属性只读,它包含当前图片的二进制数据。用户可以直接将二进制数据写如客户端,而不使用saveimage方法,具体采用那种方式需要视应用程序的设计而定。在ASP中可以使用response.binarywrite方法将图片的二进制数据写入客户端,但要注意把contenttype属性设置成相应的值。现有版本image属性仅支持JPEG或PNG文件。包含文件中的BinWTExt.asp介绍了如何使用该属性。在使用该属性之前把imageformat属性设置成JPG或PNG。 15 ImageFormat 该属性指定要保存的图片类型。 合法的值有: JPG = 1 BMP = 2 PNG = 3 GIF = 5 Image.ImageFormat = 5 Image.FileName = “c:\inetpub\wwwroot\images\logo.gif“ 16 JPEGQuality JPEG图象的质量。合法值是1到100。 Image.JPEGQuality = 95 17 MaxX 指定图象的X方向大小。 Image.MaxX = 100 18 MaxY 指定图象的Y方向大小。 Image.MaxY = 100 19 PadSize 该属性是允许用户在文字周围按水平和垂直方向用背景色自动填充的宽度。 Image.PadSize = 5 20 PenColor 指定在画布上画线时所使用的颜色。 Image.PenColor = &h80000011 21 PenStyle 指定画线时画笔的样式。 0 Solid 实线 1 Dash 虚线 2 Dot 点线 3 DashDot 虚线与点交替 4 DashDotDot 虚线与两点交替 5 Clear 无 (用于去掉使用当前画笔所画图型的边线) 6 InsideFrame 实线,但如果宽度大于1就可以使用渐进色 22 PenWidth 指定画笔的象素宽度 Image.PenWidth = 2 23 ProgressiveJPEGEncoding 指定当图片解压时是否以增量显示,默认值为False。 上次就没有看懂,现在勉强翻译出来,还望大家指正。 ProgressiveJPEGEncoding = true 24 RegisteredTo 返回购买ASPImage组件的用户名和公司名,当该组件是测试版时返回“Evaluation”字样。 25 Strikeout True or false. 指定字体是否有删除线。 Image.Strikeout = False 26 TextAngle 指定用TextOut方法写文字时文字倾斜的角度,默认值为0 Image.TextAngle = 90 27 ThreeDColor 设定立体文字的阴影色。 Image.ThreeDColor = &h80000011 28 TransparentColor 指定在保存GIF图片时所需透明的颜色。 Image.TransparentColor = vbWhite 29 TransparentText 指定在使用TextOut方法在图片上写入文字时是否使用透明模式,默认值为True。 Image.TransparentText = true 30 Underline True or false 指定文字是否有下划线 Image.Underline = False 31 Version 取得组件的内部版本号 Response.Write “Component Version: “ & Image.Version 32 X 该属性指定图片中当前X坐标 Image.X = 10 33 Y 该属性指定图片中当前Y坐标 Image.Y = 10 表9.3.2.1-1AspImage组件属性列表 ASPImage的方法 编号 方法 参数 返回值 描述 1 AddAnimationControl intDelay, bolTransparent, intTransparentColor N/A 在GIF各帧间加入一个动画控制块。intdelay是指到跳下副图片所需的延迟的微秒数(1.8以上版本适用) Image.AddAnimationControl intDelay, false, 0 2 AddImage strFileName, intX, intY True/False 使用x、y坐标在画布上加入一个新图片 3 AddImageToAnimation N/A N/A 将当前图片加入GIF动画中。在调用addimagetoanimation之前必须先调用startanimation,参见saveAnimation. (1.8以上版本适用) Image.AddImageToAnimation 4 AddImageTransparent strFileName, intX, intY, intTransparentColor True/False 使用x、y坐标在画布上加入一个新图片. strFilename为指定需要透明化的图片. intTransparentColor是指定用于透明化时确切的颜色. 相似的颜色将不会被替代 Image.AddImageTransparent “d:\apps\gr3\im.jpg“, 5, 12, vbWhite 5 AngleArc intX, intY, intRadius, dblStartDegrees, dblSweepDegrees N/A AngleArc可用来画一段直线和弧线. 直线是从当前位置到弧线的起点,弧线是沿着给定圆心和半径的圆画出的一段圆弧. 圆弧的长度是由给定起点和弧度来确定的. (1.8以上版本适用) Image.AngleArc 50, 60, 60, 50, 90 6 Arc intX1, intY1, intX2, intY2, intX3, intY3, intX4, intY4 N/A 在图片中沿着由指定矩形确定的椭圆的圆周画一段圆弧 7 BeginPath N/A N/A 打开一个路径 (参见EndPath and FillPath). 该方法支持以下路径: Polyline, Polygon, PolyBezier 8 BrightenImage intDegree N/A 使已有图片显示亮度加强。 Example: Image.BrightenImage 30 9 CreateBlackWhite N/A N/A 将当前图片转化成灰度图片 10 CreateButton intBorder, bolSoft N/A 生成一个类似图片边框的按钮,宽度为intborder个象素。如果bolSoft为真,按钮的边框变得柔和 Example: Image.CreateButton 10, true 11 CreateNegative N/A N/A 对当前图片生成反相效果 12 CropImage intStartX, intStartY, intWidth, intHeight N/A 使用起始x、y坐标位置和宽、高来剪切图片 13 Chord intX1, intY1, intX2, intY2, intX3, intY3, intX4, intY4 N/A 画一个由直线和椭圆交叉部分指定的封闭图形 14 ClearImage N/A N/A 用当前背景色作为填充色清除图片的画布 15 DarkenImage intDegree N/A 使现有图片显示亮度加深 Example: Image.DarkenImage 30 16 DoMerge strFileName, intPercent N/A 载入由strFileName指定的图片 (BMP或JPG文件需要完整的路径) ,然后和现有图片进行合并。参数intPercent值越接近100,载入的图片在现有图片中可见部分越多。 参数intPercent取值范围为1~99 . (1.8以上版本适用) 如若在使用loadimage方法载入图片时出错,那么domerge函数同样也会失效,这个函数使用的是相同的载入函数. 因此如果合并失败,试着先用loadimage函数将图片载入。如果还是不管用,查阅该文档的FAQ部分,找到loadimage函数不能成功载入图片的原因。一旦成功就可以进行DoMerge Example: DoMerge “c:\webs\shared\images\logo.jpg“, 20 17 EndPath N/A N/A 关闭一个路径 (参见BeginPath、FillPath) 18 Ellipse intX1, intY1, intX2, intY2 N/A 在图片上画一个由矩形限定的椭圆 19 FillPath N/A N/A FillPath函数用来关闭所有当前路径下的已打开的图形,并且使用当前格式刷和多边形填充方式对路径内部进行填充(1.8以上版本适用) Dim aRgnPts(5,1) aRgnPts(0,0) = 182 aRgnPts(0,1) = 34 aRgnPts(1,0) = 210 aRgnPts(1,1) = 72 aRgnPts(2,0) = 212 aRgnPts(2,1) = 112 aRgnPts(3,0) = 146 aRgnPts(3,1) = 112 aRgnPts(4,0) = 146 aRgnPts(4,1) = 76 Image.BrushStyle = 6 Image.BrushColor = vbRed Image.BeginPath Image.Polygon aRgnPts Image.EndPath Image.FillPath 20 FillRect intLeft, intTop, intRight, intBottom N/A FillRect函数填充图片中指定的矩形 21 FlipImage intDirection N/A 翻转图片 参数intDirection的合法值为: 1 : 水平 2 : 垂直 22 FloodFill intX, intY, intColor, intFillStyle N/A 使用FloodFill函数填充图片中非矩形区域. 填充区域的边界是由从点(x,y)到颜色的边界处(包含所遇到的intcolor)。 Floodfill是使用背景色和格式刷样式来进行填充 参数intFillStyle合法值为: Value Type Description 0 Surface 填充所有由intcolor参数指定颜色区域,直至和另外一种颜色的交叉处 1 Border 填充所有非intcolor参数指定颜色区域,直至和intcolor的交叉处 23 FrameRect intLeft, intTop, intRight, intBottom N/A 使用现有画笔在矩形区域的周围画一个象素宽的边界。 24 LoadImage strFileName True/False 载入一个已有的图片到画布上。载入的图片类型为JPG、BMP。使用loadimage后会重置文字属性,因此文字的字体大小、字体和特性的改变都会丢失。在调用LoadImage后记得要把修改字体属性。 25 GetPixel intX, intY IntColor 返回点(x,y)的象素颜色 26 GradientOneWay intBeginColor, intEndColor, intDirection N/A 生成颜色范围从intbegincolor到intendcolor单向渐变填充 27 GradientTwoWay intBeginColor, intEndColor, intDirection, intInOut N/A 生成颜色范围从intbegincolor到intendcolor双向渐变填充 28 LineTo intX, intY N/A 画一条从当前x,y到intx,inty的直线 29 LoadBlob ovBlob, intType True/False LoadBlob允许载入二进制数据的图片,这些图片可以是其他ASPImage对象(使用image属性)得到的、或者是从其他可以通过OLE变量指针得到二进制图象数据的数据源中得到。ovBlob 一个指向原图象数据的OLE变量指针。原图象数据是装载在ASPImage画布上的。intType参数指定了二进制文件的类型。合法的类型为: 1 : JPEG 2: BMP Example: Set Image = Server.CreateObject(“AspImage.Image“) Image.LoadImage (“d:\inetpub\wwwroot\images\map.jpg“) Image.FlipImage 2 Image.ImageFormat = 1 Set Image2 = Server.CreateObject(“AspImage.Image“) Image2.LoadBlob Image.Image, 1 [Image2 now has a flipped image of map.jpg] 30 Pie intX1, intY1, intX2, intY2, intX3, intY3, intX4, intY4 N/A 画一个椭圆扇形(好象是这么说的吧,几何都忘干净了)intX1, intY1, intX2, intY2是椭圆的外接矩形的顶点,intX3, intY3, intX4, intY4是两条半径上的点。 31 PolyBezier aryPoints N/A 画一个或多个贝塞尔曲线。 在一个polybezier中最大支持99点(1.8以上版本适用) Dim RgnPts(3,1) RgnPts(0,0) = 79 RgnPts(0,1) = 70 RgnPts(1,0) = 64 RgnPts(1,1) = 86 RgnPts(2,0) = 47 RgnPts(2,1) = 88 Image.PolyBezier RgnPts 32 Polygon aryPoints N/A Polygon 在画布上画若干条经过指定点的直线,并且画一条由终点到起点的直线将该多边形封闭。(1.8以上版本适用) Dim RgnPts(4,1) RgnPts(0,0) = 70 RgnPts(0,1) = 76 RgnPts(1,0) = 310 RgnPts(1,1) = 350 RgnPts(2,0) = 200 RgnPts(2,1) = 450 RgnPts(3,0) = 100 RgnPts(3,1) = 300 Image.Polygon RgnPts 33 PolyLine aryPoints N/A Polyline用当前画笔在画布上画若干条经过所有指定点的直线(1.8以上版本适用) Dim RgnPts(3,1) RgnPts(0,0) = 79 RgnPts(0,1) = 70 RgnPts(1,0) = 64 RgnPts(1,1) = 86 RgnPts(2,0) = 47 RgnPts(2,1) = 88 Image.PolyLine RgnPts 34 Rectangle intX1, intY1, intX2, intY2 N/A 根据指定的点画出一个矩形 35 Resize intWidth, intHeight N/A 改变图片的大小,宽、高分别为intWidth, intHeight 36 RotateImage intDegrees N/A 按指定角度旋转图片 37 RoundRect intX1, intY1, intX2, intY2, intX3, intY3 N/A 由三个指定的点画出一个圆 38 SaveAnimation N/A True/False 将当前GIF动画保存到指定文件名的文件中(1.8或以上版本适用) Image.SaveAnimation 39 SaveImage N/A True/False 将当前图象保存到指定文件名的文件中。 40 SetPixel intX, intY, intColor N/A 将象素点(intx,inty)的颜色改成intcolor (1.8或以上版本适用) for i = 10 to 50 Image.SetPixel 5+(rnd*10), i, vbGreen next 41 StartAnimation bolLoop N/A 开始顺序播放GIF动画帧. bolLoop用来确定动画是否循环播放(1.8或以上版本适用) Image.StartAnimation true 42 StrokeAndFillPath N/A N/A 关闭一个路径。使用当前画笔描绘路径的轮廓,并使用笔刷填充路径内部。(1.8或以上版本适用) 43 TextOut strText, intX, intY, bol3d N/A 在图片的(intx,inty)位置上使用当前的字体、颜色和其他特性写上文字strtext。如果bol3d为真,则文字以3d方式显示。 44 TextHeight strValue Integer 返回strvalue的文字高度(字体、字体大小、字体特性均为当前设置) 45 TextWidth strValue Integer 返回strvalue的文字宽度(字体、字体大小、字体特性均为当前设置) 46 TintImage intColor N/A 在已有图片,在图片周围用intcolor做阴影 Example: Image.TintImage vbBlue 表9.3.2.1-2 AspImage组件方法列表 调用范例: 使用ASPImage组件仅需以下步骤: 建一个对象 设置若干属性 调用SaveImage方法 以下代码举例说明如何在vbscript中使用ASPImage组件,在这个例子中我们要建立一个渐进填充的字样 为 “welcome to“的文字图片: <% Set Image = Server.CreateObject(“AspImage.Image“) rem Set various font parameters Image.FontColor = vbBlack Image.Italic = True Image.Bold = True Image.FontName = “Arial“ Image.FontSize = 12 Image.PadSize = 10 REM 计算文字的大小信息,以确定图片大小 REM 因为要渐进填充一个区域,所以必须计算 strMessage = “Welcome to“ Image.MaxX = Image.TextWidth (strMessage) Image.MaxY = Image.TextHeight (strMessage) rem 创建一个色阶(从一个颜色到另一种颜色的范围) Image.GradientOneWay vbRed, vbWhite, 0 rem 在图像上打印输出字符串 Image.TextOut strMessage, Image.X, Image.Y, false rem 设置保存的文件名并保存之 rem 注意:如果多用户调用,你应该动态产生文件名(如果同名的话,在生成文件的时候可能冲突) Image.FileName = “d:\inetpub\wwwroot\images\msg1.jpg“ if Image.SaveImage then rem 这个文件已经被保存了,所以可以写 <img src> tag 让浏览器显示这个图。 Response.Write “<img src=““/images/msg1.jpg““><br>“ else rem 由于某些原因,不能保存为图片文件。所以输出html rem 需要调试这段脚本才能找出原因。 Response.Write “<h2>Welcome to</h2> end if %> 通过使用SaveImage方法我们可以得知图片是否已经正确保存了。一般导致图片不能正确保存的原因是图片的保存路径不合法或者对该路径没有写的权限。 aspImage 1.8支持直接用response.binary向浏览器输出。 首先要把response.contenttype设置为“image/jpeg“,然后设置完了各种图形的参数 之后 下面是代码例子: <% rem 使用Binarywrite直接把图像写到浏览器的简单代码示例 rem 设置content-type为图片 Response.ContentType = “image/jpeg“ rem 创建对象的实例 Set Image = Server.CreateObject(“AspImage.Image“) rem 设置一些字体参数 Image.FontColor = vbYellow Image.Italic = True Image.Bold = True Image.FontName = “Arial“ Image.FontSize = 12 Image.PadSize = 10 rem 计算文本的大小,然后设置图像的尺寸 rem 渐进色填充必须进行填充。。 strMessage = “你好!“ & vbCrLf & “欢迎访问“ & _ VbCrLf & “http://www.chinaasp.com“ Image.MaxX = Image.TextWidth (strMessage) Image.MaxY = Image.TextHeight (strMessage) rem 创建一个色阶(从一个颜色到另一种颜色的范围) Image.GradientOneWay vbRed, vbWhite, 0 rem 使用3维风格在当前坐标(x,y)位置打印文字 Image.TextOut strMessage, Image.X, Image.Y, true Response.BinaryWrite Image.Image Set Image = nothing %> 9.5.2.2 Image Library组件 ASP Image Library是一个十分有用的组件,运用它你可以使用ASP程序可以动态的图形。例如:使用这个部件你可以创建一个ASP计数器。ASP Image Library支持GIF(不支持动态Gif),JPG 和BMP格式的图片。 主页:http://www.overpower.com.br/ImageLib/ Image Library的安装 将dll文件,拷贝到一个子目录,例如NT的目录\winnt\system32,win95/98的目录\windows\system. 注册dll文件,命令行将当前目录换到该目录,然后键入: regsvr32 overpower.dll Image Library的使用说明 组件使用方法:set oVar=Server.CreateOject(“AspImage.Image”) Image Library对象属性 这个组件是使用Delphi写的。所以下面的参数说明是Pascal风格的。 编号 属性 描述 举例 1 Width: Integer 输出图形的宽度大小,可读可写 2 Height: Integer 使用这个属性可以读或修改输出图形的高度大小 3 BrushColor: String (color) 决定了刷子的颜色,这是户 4 PenColor: String (color) 设置画线和轮廓图形的画笔的颜色。边/线决定于PenMode和PenStyle。 5 FontFace: String 设定字体的字体名 6 FontSize: Integer 指定字体的大小 7 FontBold: Boolean 字体是否加粗 8 StretchQuality: Boolean Set TRUE to enabled antialiasing after stretch images using InsertPicture or false to don‘t use (faster). 9 FontUnderline: Boolean 是否字体是带下划线的。 10 FontColor: String (Color) 文本字符的颜色 11 FontAngle: Integer 0-360之间的一个值,画字体的角度 12 FontAntialiasing: Boolean 字体显示的时候,是否平滑显示。(需要Plus!或Windows 98) 13 PenStyle: Integer 画笔的风格 1 (Solid) 实心线 2 (Dash) 划线 3 (Dot) 点线 4 (Dashdot) 点划线 5 (DashDotDot) 划点点线 6 (Clear) 没有线 7 (Insideframe) 实心线但是当PenWidth大于1,只有使用抖动颜色才有效 2到5 只有当PenWidth为1才有效 14 PenAntialiased: Boolean 使用函数line画笔宽为1图的时候是否平滑 15 PenWidth: Integer 笔宽 16 PenMode: Integer 笔的模式 Value Pixels color 1 (Black) 黑色 2 (White) 白色 3 (Nop) 不变 4 (Not) 画布背景色的反色 5 (Copy) 笔的颜色(Color属性指定的) 6 (Not Copy) 笔色的反色 7 (Merge pen not) 笔色和背景反色的组合 8 (Mask pen Not) 笔色和画布背景颜色的共同色的组合 9 (Merge not pen) 画布背景色和笔色反色的组合 10 (Mask not Pen) 画布背景色和笔色反色的共同色的组合 11 (Merge) 画布笔色和背景色的组合 12 (Not merge) I画布笔色和背景色的组合色的反色 13 (Mask) 笔色和画布背景颜色的共同色的组合 14 (Not mask) 笔色和画布背景颜色的共同色的组合 的反色 15 (Xor).笔色与画布颜色异或操作 16 (Not xor) 笔色与画布颜色异或操作 之后求非。 表9.3.2.2-1 Image Libray组件属性列表 ImageLibrary的方法 编号 方法 参数 描述 1 Textout (X: Integer, Y: Integer, Text: String) 向画布上输出一个字符串,这个串使用FontColor, FontFace, FontSize, FontBold, FontItalic, FontUnderline, FontAngle的当前值 4 GetTextWidth: Integer (Text: String) 计算一个字符串在图片中绘制的长度 5 GetTextHeight: Integer (Text: String) 计算一个字符串在图片中绘制的高度 6 Line (x1: Integer, y1: Integer, x2: Integer, y2:Integer) 画一条从(x1,y1)到(x2,y2)的线 7 Box (x1: Integer, y1: Integer, x2: Integer, y2:Integer) 从(x1,y1)到(x2,y2)画一个框,不填充 8 Fbox (x1: Integer, y1: Integer, x2: Integer, y2:Integer) 从(x1,y1)到(x2,y2)画一个框,填充 9 Chord (x1: Integer, y1: Integer, x2: Integer, y2:Integer, x3: Integer, y3: Integer, x4: Integer, y4:Integer) 绘制弓弧线。在区性区域(x1,y1)到(x2,y2)的椭圆,被(x3,y3)到(x4,y4)的直线切开。弓弧线取(x3,y3)顺时针方向的走至(x4,y4),然后走直线返回(x3,y3)。 图形的轮廓取决于PenColor, PenStyle 和PenMode,图形使用BrushColor, BrushStyle 的值来填充。 10 Ellipse (x1: Integer, y1: Integer, x2: Integer, y2:Integer) 画一个在区性区域(x1,y1)到(x2,y2)的椭圆。 图形的轮廓取决于PenColor, PenStyle 和PenMode,图形使用BrushColor, BrushStyle 的值来填充。 11 Pie (x1: Integer, y1: Integer, x2: Integer, y2:Integer, x3: Integer, y3: Integer, x4: Integer, y4:Integer) 饼图。在区性区域(x1,y1)到(x2,y2)的椭圆。 椭圆圆心到(x3,y3),椭圆圆心到(x4,y4)两根直线之间的区域。 图形的轮廓取决于PenColor, PenStyle 和PenMode,图形使用BrushColor, BrushStyle 的值来填充。 12 Arc (x1: Integer, y1: Integer, x2: Integer, y2:Integer, x3: Integer, y3: Integer, x4: Integer, y4:Integer) 使用当前的Pen属性绘制弧线。 在区性区域(x1,y1)到(x2,y2)的椭圆。弧线从椭圆和直线(椭圆圆心到(x3,y3))的交点开始,到椭圆和直线(椭圆圆心到(x4,y4))的交点结束。 13 Rectangle (x1: Integer, y1: Integer, x2: Integer, y2:Integer) 使用PenStyle, PenMode, PenColor, PenWidth 画一个矩形 并使用BrushColor,BrushStyle 填充之。 要填充矩形区域,但不用当前pen绘制边线,可以使用FillRect方法。如果要画不填充的矩形区域,使用FrameRect 或 Polygon 。画圆脚矩形使用 RoundRectangle 14 RoundRectangle (x1: Integer, y1: Integer, x2: Integer, y2:Integer, x3: Integer, y3:Integer) 使用PenStyle, PenMode, PenColor, PenWidth 绘制圆角矩形,并用BrushColor,BrushStyle填充之。矩形四个角为 (X1,Y1), (X2,Y1), (X2,Y2), (X1,Y2)。圆角的弧形决定于椭圆(该椭圆的高度是y3,宽度是x3) 15 GetPixel: String (Color) (x: Integer, y: Integer) 当前区域(x,y)位置的像素 16 SetPixel (x: Integer, y: Integer,Color: String (Color)) 使用颜色Color画像素(x,y) 17 FloodFill (x: Integer, y: Integer, Color: String (Color)) 使用BrushColor,BrushStyle填充不规则区域。该区域的边界从(x,y)处向外扩散,直到遇到不同颜色的边界为止。 18 PictureSize (Filename: String, *pWidth: Integer, *pHeight:Integer) 获得由filename指定的文件名的图片文件的大小尺寸(宽和高)。 19 SavePicture (Filename: String, format: Integer, JPGQuality: Integer, GIFTransparentColor:String (color)) 保存图片到服务器上。格式可以是 1- BMP 2-Gif (使用GIFTransparentColor参数) 3-JPG(使用JPGQuality参数) 20 InsertPicture (Filename: String, x: Integer, y: Integer, Scale: Boolean, width: integer, height:integer) 在位置(x,y)插入图片(GIF,BMP或JPG) 21 PictureBinaryWrite (format: integer, JPEGQuality: Integer, GIFTransparentColor: String (color)) 使用需要的格式和response.contenttype,输出response.binarywrite 。 22 GetRGBColor:String (Color) (R: Integer, G: Integer, B: Integer) 指定R(红),G(绿),B(蓝)三个元色的值,返回一个颜色的值(字符串) 23 GetRValue: Integer (Color: String (Color)) 返回一个颜色的红元色值。 24 GetGValue: Integer (Color: String (Color)) 返回一个颜色的绿元色值。 25 GetBValue: Integer (Color: String (Color)) 返回一个颜色的蓝元色值。 26 Fillrect (x: Integer; y: Integer; x2: Integer; y2: Integer) 用当前的brush,填充矩形区域 27 PolyBezier Points: Array (x,x) of Integer 贝塞尔曲线 28 Polygon (Points: Array (x,x) of Integer) 绘制闭合的多边形(使用当前的pen的值)。并使用Brush的值填充。如果不填充这个多边形,可以调用Polyline 29 SidePolygon (x: Integer; y: Integer; ray: Integer; sides: Integer; angle: Integer) 绘制一个多边形,以(x,y)为中心,并以一个定义好的数值(sides)发散出去。你可以使用angle参数旋转这个多边形。 30 Fillrect (x: Integer; y: Integer; x2: Integer; y2: Integer; Startcolor: Color (String); EndColor: Color (String)) 使用一个水平方向的色阶(StartColor->EndColor)填充矩形。 31 Polyline (Points: Array (x,x) of Integer) 多边形 但是不填充。如果只有两个点,就绘制一个直线。 表9.3.2.2-2 Image Libray组件方法列表 使用范例: ‘ ‘ 这里的代码是一个图形计数器。它会在站点根目录下创建一个文本文件纪录访问数目。 ‘ 调用方法: <img src=”count.asp?id=mypage1”> 可以改变mypage1为你其他的计数名字。 function Barra(Pasta) Barra = Pasta if mid(Barra,len(Barra),1) <> “\“ then Barra = Barra + “\“ end function Set Sistema = CreateObject(“Scripting.FileSystemObject“) set ILIB = server.createobject(“Overpower.ImageLib“) BaseFolder = barra(server.mappath(“/“)) CounterFile = BaseFolder + “count“+request.querystring(“ID“) + “.COU“ contagem = 0 if Sistema.FileExists(counterfile) then Set arquivo = Sistema.GetFile(counterfile) Set texto = arquivo.OpenAsTextStream(1, -2) contagem = texto.readline texto.close end if contagem = contagem + 1 Set texto = sistema.CreateTextFile(counterfile, true, false) texto.writeline contagem texto.close texto = contagem & “ visit“ if contagem > 1 then texto = texto + “s“ ILIB.FontColor = “ClRed“ ILIB.BrushColor = “clBlack“ ILIB.FontFace = “Comic Sans MS“ ILIB.FontSize = 12 ILIB.FontBold = false ILIB.width = ILIB.GetTextwidth(texto)+5 ILIB.height = ILIB.GetTextHeight(texto)+5 ILIB.PenColor = “clRed“ ILIB.fBox 1,1,ILIB.WIDTH,ILIB.HEIGHT ILIB.Textout texto,3,-3 ILIB.FontColor = “ClWhite“ ILIB.FontSize = 7 tamanho = ILIB.GetTextWidth(“Example“) ILIB.Textout “Example“,ILIB.width/2 - tamanho/2,10 ILIB.PictureBinaryWrite 2, 0, ““ %> 9.5.3 文件上传组件 9.5.3.1 ChinaASP File Upload组件 ChinaASP File Upload是一个ChinaASP自己开发的组件。目前的版本是beta3 功能特点: 支持上传多个文件 可以将上传的文件改名保存 可以同时使用其它的form input,携带附加的信息,例如,文件说明。 可以判断上传文件的大小、文件类型 支持将文件内容保存进数据库 无需IIS将目录设置为Write(如果是NTFS文件系统,其安全性需要设置,可以简单的设置为everyone full control,或者设置为IUSR_SERVER full control) 测试版本没有日期限制 下载: http://www.chinaasp.com/program/fileup.htm 适用系统: NT4.0 server 中文版 + IIS 4 或者 Windows 98/95 中文版 + Personal Web Server 安装 下载的zip包里面有安装程序,直接运行setup.exe。安装程序将提示你安装到的目录,然后会自动完成注册等工作。注意:可能需要你重新启动系统。 组件的使用 set FileUp=server.createobject(“ChinaASP.UpLoad“) 组件的属性 编号 属性 读/写 描述 1 Files 只读 返回一个Collection对象,包含上传文件的信息(ContentType、文件名、上传Form内的Input名称、文件大小、及文件的两进制内容) 2 Form 只读 返回一个Collection对象,包含上传form内其他类型input(text/button等)的内容(form内input名称、该input的value) 3 UsedTime 只读 Com处理上传信息所使用的时间 4 CopyrightInfo 只读 版权信息 表9.3.3.1-1 FileUp组件属性列表 Files元素的属性 编号 属性 读/写 描述 1 ControlName 只读 上传Form内对应的file类型input的名称 2 IsEmpty 只读 是否是Empty,如果上传Form的file类型的input没有输入任何路径,则上传后其对应的files元素的IsEmpty值就为true,反之为false 3 FileName 只读 上传的原文件名 4 FileSize 只读 文件大小,如果上传的原文件不存在,则FileSize为0 5 ContentType 只读 上传文件内容的Mime类型,如text/plain 6 FileContent 只读 文件的两进制内容 表9.3.3.1-2 FileUp组件Files元素属性列表 Files元素的方法 SaveAs filename filename是是文件路径,如果是url,需要用server.mappath()进行转化 Form元素的属性 编号 属性 读/写 描述 1 ControlName 只读 上传Form内对应的file类型input的名称 2 Value 只读 Value 表9.3.3.1-3 FileUp组件Form元素属性列表 程序范例 上传Form的写法: <form enctype=“multipart/form-data“ method=“post“ action=“Upload.asp“ name=“Upload“> <input type=“hidden“ name=“CopyrightInfo“ value=“http://www.chinaasp.com“><p> 上载测试,请选择文件</p> <p>上传文件:<input type=“file“ name=“file“><br> </p> <p>上传文件:<input type=“file“ name=“file2“></p> <p>写两句:</p> <p><textarea id=“TEXTAREA1“ name=“TEXTAREA1“ style=“HEIGHT: 86px; WIDTH: 339px“ rows=“1“ cols=“20“> </textarea><br> </p> <p><input type=“submit“ value=“Upload“ name=“B1“></p> </form> 说明: form必须加上 enctype=”multipart/form-data” 并且method必须是post 如果要上传多个文件,只需放入类型为 file的input, 请为它们起不同的名字(name) 在上传Form内必须加上<input type=“hidden“ name=“CopyrightInfo“ value=“http://www.chinaasp.com“>,否则上传组件将不能正常使用 Upload.asp程序(处理上传的文件内容) <%@ LANGUAGE=“VBSCRIPT“ %> <% ‘ |
|
|
精彩回复选登:
|



