读书人

大哥哥大姐姐点阵:怎么将输入的文

发布时间: 2012-04-06 12:22:24 作者: rapoo

大哥哥,大姐姐,点阵:如何将输入的文字转换成指定大小的点阵?
如何将输入的文字转换成指定大小的点阵。比如输入一个字“中”,可以按照要求转换成8*8,16*16,24*24,32*32等规格的点阵图

就是说要的结果是类似16进制,如64*32的LED屏幕显示22222,那么得到的16进制是:
64 div 8 = 8
8 * 32 = 256
所以下面也是256个点(00算一个点的话)

00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
3C 3C 3C 3C 3C 00 00 00
42 42 42 42 42 00 00 00
42 42 42 42 42 00 00 00
42 42 42 42 42 00 00 00
04 04 04 04 04 00 00 00
04 04 04 04 04 00 00 00
08 08 08 08 08 00 00 00
10 10 10 10 10 00 00 00
20 20 20 20 20 00 00 00
42 42 42 42 42 00 00 00
7E 7E 7E 7E 7E 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00

那如果发送“我是龙卷风”,那么得到的16进制是:
也就是说每行最多只显示4个中文字,单字节每行可以显示8个,如数字或英文,所以超过4个中文字就从1,1这个坐标开始显示中文字,来进行点阵

06 40 00 00 02 00 01 10
38 50 0F F0 02 40 11 18
08 48 08 10 02 20 09 20
08 48 0F F0 02 20 3F FC
08 40 08 10 7F FE 01 00
FF FE 0F F0 02 80 02 00
08 40 00 00 02 90 FF FE
08 48 FF FE 02 90 04 20
0E 28 01 00 04 A0 0F D8
38 30 09 00 04 C0 14 4E
C8 20 09 F8 08 80 24 44
08 50 09 00 09 80 85 40
09 92 15 00 12 82 04 90
08 0A 23 00 20 82 04 10
28 06 40 FE 40 7E 03 F0
10 02 00 00 00 00 00 00
00 00 00 00 00 00 00 00
1F F8 00 00 00 00 00 00
10 08 00 00 00 00 00 00
10 48 00 00 00 00 00 00
14 68 00 00 00 00 00 00
12 48 00 00 00 00 00 00
11 48 00 00 00 00 00 00
10 88 00 00 00 00 00 00
10 88 00 00 00 00 00 00
11 48 00 00 00 00 00 00
12 6A 00 00 00 00 00 00
24 2A 00 00 00 00 00 00
28 26 00 00 00 00 00 00
40 06 00 00 00 00 00 00
80 02 00 00 00 00 00 00
00 00 00 00 00 00 00 00

有没有一个公式来计算呢,然后把输入的文字和屏幕长和宽套进去?

[解决办法]
记得我回复过的,怎么没有了?
删掉了??
[解决办法]
lz闹着玩呢。接分
[解决办法]
楼主搞了4个贴问这个问题,分多啊
[解决办法]
大致代码,注意方向可能不同

Delphi(Pascal) code
function str2bitmap (const s:string):string;begin    result:='';    b:=0;    imagehide.picture.bitmap.canvas.textout(0,0,str);    for y:=0 to 16-1 do        for x:=0 to 48-1 do        begin            if imagehide.picture.bitmap.canvas.pixel[x,y]=imagehide.picture.bitmap.canvas.font.color then                b:=b or (1 shl (x mod 16));            if (x mod 16=15) then            begin                result:=result+format(" %.2x",[b]);                b:=0;            end;        end;end;
[解决办法]
跟踪一下,b:=b or (1 shl (x mod 16));执行到过没有

另外,
b:=b or (1 shl (x mod 16));
if (x mod 16=15) then
该改为
b:=b or (1 shl (x mod 8));
if (x mod 8=7) then


[解决办法]
那看看图片的每一个点是什么颜色?
或者改为:
if imagehide.picture.bitmap.canvas.pixels[x,y]<>clwhite then
b:=b or (1 shl (x mod 8));

[解决办法]
楼主的英文字符是用等宽字体还是不等宽字体?
楼主的图像编码顺序是什么样的?
楼主的图像是单色的还是彩色的?
[解决办法]
关注并JF
[解决办法]
关注中。。
[解决办法]
“我”字就是由很多点组成的啊,每个点都是什么颜色?背景是什么颜色。。。。。。。
[解决办法]
接分

读书人网 >.NET

热点推荐