重:READ/DATA把图片数据POKE到屏幕,GET/PUT完成碧波荡漾动画
qbasic吧
全部回复
仅看楼主
level 1
lwjohn 楼主
先发个标题吧。
同名帖子刚发就被删除了。[惊哭]
2017年02月16日 04点02分 1
level 1
lwjohn 楼主
请到http://www.vbgood.com/forum.php?mod=viewthread&tid=151399&page=1&extra=#pid723386
那里有我上传的压缩文件。就是FOREST动画QB程序。
2017年02月16日 04点02分 2
level 1
lwjohn 楼主
“回复”栏似乎没有附件选项。所以一时无法在本吧贴附件。只把程序部分贴出来。我隐隐感觉系统对DATA中的乱码很警惕。
1 SCREEN 13
2 IF i& = 0 THEN DEF SEG = &HA000 ELSE DIM b%(164)
3 IF (i& \ 320) < 150 THEN READ c&, a$ ELSE j = j ^ 1 + 1 ^ 1 MOD 250
4 IF (i& \ 320) < 150 THEN i& = i& + 1& ELSE PUT (1 ^ 1, 150 ^ 1 + (j ^ 1 MOD 49 ^ 1)), b%(0), PSET
5 IF (i& \ 320) < 150 THEN POKE i&, ASC(MID$(a$, i& MOD 160 + 1, 1)) ELSE GET (1 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1))-(319 ^ 1, 150 ^ 1 - (j ^ 1 MOD 49 ^ 1) - 5 ^ 1 * SIN(j ^ 1 \ 2 ^ 1 * 2 ^ 1) ^ 1), b%(0)
6 IF (i& \ 160) < 256 THEN IF (i& MOD 160) = 0 THEN PALETTE (i& \ 160), c&
7 IF LEN(INKEY$) = 0 THEN IF (i& \ 320) < 150 THEN IF ((i& + 1) MOD 160) THEN GOTO 4 ELSE GOTO 3 ELSE GOTO 2
2017年02月16日 04点02分 3
level 1
lwjohn 楼主
乱码300条,无法贴。附件请看2楼上的链接可下载。
2017年02月16日 04点02分 5
你把data中的转换一下,应该可以显示
2017年02月16日 04点02分
@白芦花 我曾经把DATA写到TXT仍是乱码,也曾把ASC写到TXT成为数字。
2017年02月16日 05点02分
48000条ASC数据可以得到,关键是DATA源数据是如何获得的。如何与你的程序的二进制数据对应?我用你的程序写出了二进制数据192000条。
2017年02月16日 05点02分
@lwjohn 太长了,贴上来也没意思,这里也没有别人
2017年02月16日 06点02分
level 1
lwjohn 楼主
48000是图片3/4图面的ASC数据,还有16000条是0或者255重复数据,属于空白或者空黑画面数据,是留给动画画布的。48000+16000=64000=320X200,颜色值是256*256*R+256*G+B,否则应该是64000X3=192000即是用你的“”任意大小“”程序获得的数据量。
2017年02月16日 05点02分 6
level 1
lwjohn 楼主
本程序第5句代码可取得可辨认的ASC数据。ASC数据赋值给POKE,而DATA中的C&是给 PALETTE的。都是我不熟悉的函数或语句。
2017年02月16日 05点02分 7
DATA这种现在(VB)一般不用了
2017年02月16日 06点02分
@白芦花 可以转TXT。关键要学会SEG/POKE/PALLETE
2017年02月16日 09点02分
@lwjohn 你用老的QBasic程序按F1有说明的
2017年02月16日 10点02分
@lwjohn qb64中按F1也有说明和例子,不过是英文的
2017年02月16日 10点02分
level 1
lwjohn 楼主
明白了:需要5级头衔才能附件。
2017年02月16日 05点02分 8
你的哪个程序不是好了吗?
2017年02月16日 06点02分
@白芦花 这个程序比较奇怪,最好也搞清楚。
2017年02月16日 09点02分
@lwjohn 好吧,你多研究研究吧
2017年02月16日 10点02分
level 1
lwjohn 楼主
处于烂尾状态。
转VB试试,代码行红色警告!
_RGB()估计好办。
VB不认识QB的超快速读写屏幕的GET/PUT语句[疑问]比较麻烦。
请高手指教,VB如何兼容QB的GET/PUT?
2017年02月19日 09点02分 9
vb 有更快的,你不知道吧了
2017年02月19日 14点02分
现在的硬件很快,我把你哪个程序中的get,put 去掉,搞个写点的也很快
2017年02月19日 14点02分
level 1
lwjohn 楼主
http://www.educity.cn/wenda/557461.html
讲的太复杂。VB为什么不完全兼容QB?
2017年02月19日 10点02分 10
level 5
CLS '写两次;删除写
SCREEN _NEWIMAGE(640, 480, 32) '定义32位真彩色屏幕
DIM w AS LONG, h AS LONG
DIM dataweizhi AS LONG '图象DATA开始的位置
OPEN "0218.bmp" FOR BINARY AS #1
GET #1, 19, w 'GET|PUT 读写#文件号,[位置],变量
GET #1, 23, h
GET #1, 11, dataweizhi '12
cc = w * h
DIM col1(cc), col2(cc), col3(cc) AS INTEGER
dataweizhi = dataweizhi + 1
i4 = w * 3
i4 = i4 - (i4 \ 4) * 4
IF i4 <> 0 THEN i4 = 4 - i4 '4字节补齐量
FOR y = 0 TO h - 1
FOR x = 0 TO w - 1 's2bu '跳过几点
SEEK #1, dataweizhi + x * 3 '[#]文件号,位置---设置文件中下一个读写位置
col1(i) = ASC(INPUT$(1, # 1))
col2(i) = ASC(INPUT$(1, # 1))
col3(i) = ASC(INPUT$(1, # 1))
PSET (xx, h - yy), _RGB(col3(i), col2(i), col1(i)) '真彩色'写到屏幕
i = i + 1
xx = xx + 1 '水平向右
NEXT x
xx = 0
yy = yy + 1 '200-yy 垂直向上
dataweizhi = dataweizhi + (w * 3 + i4) '跳过几行
NEXT y
CLOSE
DIM t2 AS INTEGER, t3 AS LONG, t4 AS INTEGER
hw = 49 '水波行
DO
j = (j + 1)
'================================================================
t1 = (j MOD hw)
t2 = hw + t1 + 5 * COS(j \ 4)
IF t2 < 0 THEN t2 = 0
IF t2 > h - 1 THEN t2 = h - 1
t3 = t2 * w
t4 = hw - t1
IF t4 < 0 THEN t4 = 0
xx = 0
FOR x = 0 TO w - 1 's2bu '跳过几点
PSET (xx, h - t4), _RGB(col3(t3 + x), col2(t3 + x), col1(t3 + x)) '真彩色'写到屏幕
xx = xx + 1 '水平向右
NEXT x
'----------------------------------------------------------------
'这里去掉了一样可以
'----------------------------------------------------------------
'暂停(延时)一点时间
_LIMIT 700 + 100 * RND(10)
'================================================================
LOOP UNTIL INKEY$ <> ""
END
2017年02月19日 16点02分 11
level 1
lwjohn 楼主
真的很不错,连POINT也不需要,直接PSET!!!
请转VB试试吧。
col1(i) = ASC(INPUT$(1, # 1))会警告无效的过程或参数。
2017年02月21日 06点02分 15
没装,你自己试试吧,原理搞明白了,什么语言都 一样
2017年02月21日 14点02分
@白芦花 正在努力。只是我对二进制文件很生疏。
2017年02月21日 16点02分
level 11
这个吧有人的,就是技术不好
2017年02月21日 11点02分 16
请赐教。谢谢。
2017年02月21日 23点02分
白芦花做了很好的QB图形程序。
2017年02月21日 23点02分
level 1
lwjohn 楼主
VB加载图片只要1行代码。
我的VB6找不到richtextbox。richtextbox1是NET还是C的?
2017年02月22日 04点02分 18
richtextbox控件要自己添加
2017年02月22日 23点02分
vb6中有的
2017年02月22日 23点02分
具体看教程
2017年02月22日 23点02分
@白芦花 谢谢。以后试试richtextbox有何特点。这可能是VB6提高类。
2017年02月23日 01点02分
level 1
lwjohn 楼主
这几天忙于杂务。这里无进展。
搜索“”VISUAL BASIC 从BMP图片二进制文件读取RGB颜色值“”,“”VISUAL BASIC“”销声匿迹。
2017年02月23日 01点02分 19
搜索 “VB 二进制文件读写”
2017年02月23日 02点02分
去掉INPUT$ 用GET读文件
2017年02月23日 02点02分
level 1
lwjohn 楼主
昨天还试过的,怕是不够准确。
Get #1, dataweizhi, R
col1(i) = Asc(R) '黄色告警此句无效的过程调用或参数
INPUT$改INPUT也试过的。设置中间变量到ASC就告警无效的过程调用或参数。是不是变量类型问题,我自己写代码时一直省事用空白类型。
2017年02月23日 04点02分 20
1 2 3 尾页