主题:[原创]试着写了一个显示BMP图像的小程序
刚刚研究显示图像,写的很粗糙,大家不要见笑。只针对16色的BMP写的,恳请大家能指出存在的问题,谢谢。
DECLARE SUB drawpix ()
SCREEN 12
CLS
DIM w AS LONG, h AS LONG, offset AS LONG, dataclor AS LONG
DIM SHARED t AS LONG, clor
INPUT filestr$
OPEN filestr$ FOR BINARY AS #1
SEEK #1, 1
IF INPUT$(2, #1) = "BM" THEN
LOCATE 1, 60
PRINT "It is a bmp image!"
ELSE
END
END IF
GET #1, 19, w
GET #1, 23, h
GET #1, 11, offset
LOCATE 20, 20
PRINT w, h, HEX$(offset)
DO UNTIL EOF(1)
IF x > w THEN
x = 1
h = h - 1
END IF
GET #1, offset + i, dataclor
t = dataclor
t = (t AND &HF)
CALL drawpix
PSET (x, h), clor
x = x + 1
t = dataclor
t = (t AND &HF0) / &H10
CALL drawpix
PSET (x, h), clor
x = x + 1
i = i + 1
LOOP
CLOSE 1
END
SUB drawpix
IF t = 0 THEN
clor = 0
ELSEIF t = 1 THEN
clor = 4
ELSEIF t = 2 THEN
clor = 10
ELSEIF t = 3 THEN
clor = 10
ELSEIF t = 4 THEN
clor = 8
ELSEIF t = 5 THEN
clor = 5
ELSEIF t = 6 THEN
clor = 3
ELSEIF t = 7 THEN
clor = 7
ELSEIF t = 8 THEN
clor = 8
ELSEIF t = 9 THEN
clor = 12
ELSEIF t = 10 THEN
clor = 10
ELSEIF t = 11 THEN
clor = 14
ELSEIF t = 12 THEN
clor = 1
ELSEIF t = 13 THEN
clor = 13
ELSEIF t = 14 THEN
clor = 9
ELSEIF t = 15 THEN
clor = 15
END IF
END SUB
先得输入16色BMP图象的位置
DECLARE SUB drawpix ()
SCREEN 12
CLS
DIM w AS LONG, h AS LONG, offset AS LONG, dataclor AS LONG
DIM SHARED t AS LONG, clor
INPUT filestr$
OPEN filestr$ FOR BINARY AS #1
SEEK #1, 1
IF INPUT$(2, #1) = "BM" THEN
LOCATE 1, 60
PRINT "It is a bmp image!"
ELSE
END
END IF
GET #1, 19, w
GET #1, 23, h
GET #1, 11, offset
LOCATE 20, 20
PRINT w, h, HEX$(offset)
DO UNTIL EOF(1)
IF x > w THEN
x = 1
h = h - 1
END IF
GET #1, offset + i, dataclor
t = dataclor
t = (t AND &HF)
CALL drawpix
PSET (x, h), clor
x = x + 1
t = dataclor
t = (t AND &HF0) / &H10
CALL drawpix
PSET (x, h), clor
x = x + 1
i = i + 1
LOOP
CLOSE 1
END
SUB drawpix
IF t = 0 THEN
clor = 0
ELSEIF t = 1 THEN
clor = 4
ELSEIF t = 2 THEN
clor = 10
ELSEIF t = 3 THEN
clor = 10
ELSEIF t = 4 THEN
clor = 8
ELSEIF t = 5 THEN
clor = 5
ELSEIF t = 6 THEN
clor = 3
ELSEIF t = 7 THEN
clor = 7
ELSEIF t = 8 THEN
clor = 8
ELSEIF t = 9 THEN
clor = 12
ELSEIF t = 10 THEN
clor = 10
ELSEIF t = 11 THEN
clor = 14
ELSEIF t = 12 THEN
clor = 1
ELSEIF t = 13 THEN
clor = 13
ELSEIF t = 14 THEN
clor = 9
ELSEIF t = 15 THEN
clor = 15
END IF
END SUB
先得输入16色BMP图象的位置