您的位置:首页网页设计ASP实例 → 不用图像组件的ASP图像计数器

不用图像组件的ASP图像计数器

时间:2004/11/7 2:56:00来源:本站整理作者:蓝点我要评论(0)

前几天看了netnice和qzsage君的贴子,颇有启发,于是着手编了一个图像计数器,这个图像计数器没有用图像组件,也不是以前那样用几张图片拼起来,而是用了*.xbm的图片格式。这种格式可能只能在Windows+IE下才能显示。

具体的思路是这样:

图片用点阵的形式表示,比如2:



00111100 0011为3 1100为C 即0x3c

01100110 0110为6 0110为6 0x66

01100000 ....... 0x表示十六进制数。

01100000 依此类推

00110000 这是用二进制数得到的点阵,其中的1为显示一黑点,0不显示

00011000 是一个反着看的2

00001100 其余数字可自已排列点阵再二进制化为十六进制数

00000110 缺点是只有黑白两种颜色

00000110 显示出来是白底黑字,要显示黑底白字的话,对其取反就行了

01111110



下面是我"画"的0-9的数字



num.asp



<%

Dim a(10,10)



a(0,1) = "0x3c" '数字0

a(0,2) = "0x66"

a(0,3) = "0xc3"

a(0,4) = "0xc3"

a(0,5) = "0xc3"

a(0,6) = "0xc3"

a(0,7) = "0xc3"

a(0,8) = "0xc3"

a(0,9) = "0x66"

a(0,10)= "0x3c"



a(1,1) = "0x18" '数字1

a(1,2) = "0x1c"

a(1,3) = "0x18"

a(1,4) = "0x18"

a(1,5) = "0x18"

a(1,6) = "0x18"

a(1,7) = "0x18"

a(1,8) = "0x18"

a(1,9) = "0x18"

a(0,10)= "0x7e"





a(2,1) = "0x3c" '数字2

a(2,2) = "0x66"

a(2,3) = "0x60"

a(2,4) = "0x60"

a(2,5) = "0x30"

a(2,6) = "0x18"

a(2,7) = "0x0c"

a(2,8) = "0x06"

a(2,9) = "0x06"

a(2,10)= "0x7e"



a(3,1) = "0x3c" '数字3

a(3,2) = "0x66"

a(3,3) = "0xc0"

a(3,4) = "0x60"

a(3,5) = "0x1c"

a(3,6) = "0x60"

a(3,7) = "0xc0"

a(3,8) = "0xc0"

a(3,9) = "0x66"

a(3,10)= "0x38"



a(4,1) = "0x38" '数字4

a(4,2) = "0x3c"

a(4,3) = "0x36"

a(4,4) = "0x33"

a(4,5) = "0x33"

a(4,6) = "0x33"

a(4,7) = "0xff"

a(4,8) = "0x30"

a(4,9) = "0x30"

a(4,10)= "0xfe"



a(5,1) = "0xfe" '数字5

a(5,2) = "0xfe"

a(5,3) = "0x06"

a(5,4) = "0x06"

a(5,5) = "0x3e"

a(5,6) = "0x60"

a(5,7) = "0xc0"

a(5,8) = "0xc3"

a(5,9) = "0x66"

a(5,10)= "0x3c"



a(6,1) = "0x60" '数字6

a(6,2) = "0x30"

a(6,3) = "0x18"

a(6,4) = "0x0c"

a(6,5) = "0x3e"

a(6,6) = "0x63"

a(6,7) = "0xc3"

a(6,8) = "0xc3"

a(6,9) = "0x66"

a(6,10) ="0x3c"



a(7,1) = "0xff" '数字7

a(7,2) = "0xc0"

a(7,3) = "0x60"

a(7,4) = "0x30"

a(7,5) = "0x18"

a(7,6) = "0x18"

a(7,7) = "0x18"

a(7,8) = "0x18"

a(7,9) = "0x18"

a(7,10)= "0x18"



a(8,1) = "0x3c" '数字8

a(8,2) = "0x66"

a(8,3) = "0xc3"

a(8,4) = "0x66"

a(8,5) = "0x3c"

a(8,6) = "0x66"

a(8,7) = "0xc3"

a(8,8) = "0xc3"

a(8,9) = "0x66"

a(8,10)= "0x3c"



a(9,1) = "0x3c" '数字9

a(9,2) = "0x66"

a(9,3) = "0xc3"

a(9,4) = "0xc3"

a(9,5) = "0x66"

a(9,6) = "0x3c"

a(9,7) = "0x18"

a(9,8) = "0x0c"

a(9,9) = "0x06"

a(9,10)= "0x03"



%>



显示的方法是:



1.先传出一个MIME:

Response.ContentType = "image/x-xbitmap"

2.再传出一个c++的源程序,如显示2:

#define counter_width 8

#define counter_height 10

static unsigned char counter_bits[] = {

0x3c,0x66,0x60,0x60,0x30,0x18,0x0c,0x06,0x06,0x7e

};

这样在浏览器上就显示出来一个8*10像素的2了



要显示两个或以上的数字的时候,须改动宽度的值(必须是图像点阵宽度的整数倍),在count_bits[]数组的值排序如下:

比如显示 12

a(1,1), a(2,1), a(1,2), a(2,2)... a(1,10), a(2,10)

下面是具体计数器的例子:



count.asp





<%

Dim Image

Dim Width, Height

Dim num

Dim digtal

Dim Length

Dim sort

Length = 10 '自定计数器长度



Redim sort( Length )





num = 62275 '计数器的值

digital = ""

For I = 1 To Length -Len( num ) '补0

digital = digital & "0"

Next

For I = 1 To Len( num )

digital = digital & Mid( num, I, 1 )

Next

For I = 1 To Len( digital )

sort(I) = Mid( digital, I, 1 )

Next

Width = 8 * Len( digital ) '图像的宽度

Height = 10 '图像的高度,在本例中为固定值





Response.ContentType="image/x-xbitmap"



hc=chr(13) & chr(10)



Image = "#define counter_width " & Width & hc

Image = Image & "#define counter_height " & Height & hc

Image = Image & "static unsigned char counter_bits[]={" & hc



For I = 1 To Height

For J = 1 To Length

Image = Image & a(sort(J),I) & ","

Next

Next



Image = Left( Image, Len( Image ) - 1 ) '去掉最后一个逗号

Image = Image & "};" & hc



Response.Write Image



%>



好了,简单的思路就是这样了,有什么错误的地方,还希望大家多多指正!






相关阅读 Windows错误代码大全 Windows错误代码查询激活windows有什么用Mac QQ和Windows QQ聊天记录怎么合并 Mac QQ和Windows QQ聊天记录Windows 10自动更新怎么关闭 如何关闭Windows 10自动更新windows 10 rs4快速预览版17017下载错误问题Win10秋季创意者更新16291更新了什么 win10 16291更新内容windows10秋季创意者更新时间 windows10秋季创意者更新内容kb3150513补丁更新了什么 Windows 10补丁kb3150513是什么

文章评论
发表评论

热门文章 没有查询到任何记录。

最新文章 迅雷新手完全入门手册 asp下面javascript上传图片限制格式大小方法告诉大家网页弹出窗口应用总结ASP常见错误类型大全asp常见错误分析和解决办法

人气排行 总是弹出visual studio 实时调试器 三种解决SQLSERVER存储过程及调用详解Asp获取真实IP地址ASP中连接Mssql的几种方法一个简单好用的UBB编辑器(含代码)如何用Split将字符串转换为数组并获取数组下ASP防止表单重复提交的办法告诉你免费的简单聊天室源代码