大哥哥,大姐姐,点阵:怎么将输入的文字转换成指定大小的点阵
大哥哥,大姐姐,点阵:如何将输入的文字转换成指定大小的点阵?
如何将输入的文字转换成指定大小的点阵。比如输入一个字“中”,可以按照要求转换成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个贴问这个问题,分多啊
------解决方案--------------------
大致代码,注意方向可能不同
如何将输入的文字转换成指定大小的点阵。比如输入一个字“中”,可以按照要求转换成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