主题:[原创]本人制作的图形模式编程单元LOA Library(V1.10正式更新,请重新下载)
由于调色版再次被本人"恶意篡改", 所以请重新用Bmptocel.pas制作cel图块.
压缩包里面的loalib2.pas请暂时无视之......
图形模式操作函数/过程:
procedure set13h;
作用: 切换至图形模式(320x200x256色).
参数: 无
procedure settext;
作用: 切换至文本模式.
参数: 无
procedure setpal(pal:word);
作用: 初始化调色板, 请在调用set13h后立即调用之.
参数: pal为颜色的深浅程度(正常情况下一般设为100), 此参数关系到所有颜色的深浅.
procedure pset(x, y, z:word);
作用: 在屏幕上画点
参数: x为横坐标(0-319), y为纵坐标(0-199), z为颜色(0-255)
function point(x, y:word):word;
作用: 取屏幕上某点的颜色值
参数: x为横坐标(0-319), y为纵坐标(0-199), 返回值为颜色(0-255)
procedure putimg(po: pointer; x, y, typ:word);
作用: 将一个cel图块放置在屏幕上(cel图块由组件Bmptocel.pas转换而来, 后面会说明)
参数: po为指向cel图块的指针, x为横坐标(0-319), y为纵坐标(0-199), typ为0时直接放置于屏幕上, 为1时用AND运算放置于屏幕上, 为2时用OR运算放置于屏幕上, 为3时用XOR运算放置于屏幕上, 为4时反色放置于屏幕上.
procedure getimg(po: pointer; x1, y1, x2, y2:word);
作用: 从屏幕上获得一个cel图块
参数: po为指向cel图块的指针, (x1, y1)为图块左上角, (x2, y2)为图块右下角.
procedure transput(po: pointer; x, y, trans:word);
作用: 将cel图块半透明显示在屏幕上
参数: po为指向cel图块的指针, x为横坐标(0-319), y为纵坐标(0-199).
procedure loadcel(po:pointer; nam:string);
作用: 从文件中读入一个图块
参数: po为指向cel图块的指针, nam为文件名
procedure savecel(po:pointer; nam:string);
作用: 将某图块存入文件中
参数: po为指向cel图块的指针, nam为文件名
procedure line(x, y, x2, y2, col:word);
作用: 画线
参数: 直线从(x, y)到(x2, y2), 颜色为col
procedure box(x1, y1, x2, y2, col, typ:word);
作用: 画矩形
参数: 左上角(x1, y1), 右下角(x2, y2), col为颜色, typ为0时不填充, typ为1时填充
procedure cls;
作用: 清屏(图形模式)
参数: 无
procedure waitvga;
作用: 将此句置于刷新屏幕语句前可使屏幕不闪烁
参数: 无
procedure showstr(x, y, color:word; st:string);
作用: 在屏幕上显示文字(支持中文)
参数: (x, y) 为第1个字的起始坐标, color为颜色, st为要显示的字符串(注意:此过程不会自动换行)
PS:话说我的签名就是用这个弄的......
procedure rolcel(po, po2:pointer; xr, yr:word);
作用: 拉伸/压缩图片
参数: po指针指向原始图片, po2指针指向转换后的图片, xr为拉伸/压缩后的宽度, yr为拉伸/压缩后的高度
procedure circle(cx, cy, r, color, typ:word);
作用: 画圆
参数: 圆心(cx, cy), 半径r, color为颜色, typ为0时不填充, typ为1时填充.
接下来说明一下bmptocel.pas的用法:
运行此程序, 输入BMP文件名(无须加扩展名), BMP必须是24位真彩色, 且不大于320x200(长宽都不能超), 会生成一个.cel文件.
然后在程序开头加这样2句:
type
bmptype:array[0..cc]of word;{这里的cc按这样计算: cc=(图片高度*图片宽度)/2+1, 四舍五入, 如果你要用多个不同大小的cel, 请分别定义类型}
pbmptype:^bmptype;{指向bmptype类型的指针}
然后就可以用loadcel过程读入cel图块了(读入前别忘了用new指令为指针开辟空间, 如果你忘了, 轻则TP跳出, 重则花屏死机......)
剩下的一会再写......写说明文档真痛苦- -|||