中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-08-01 13:24
中国DOS联盟论坛 » DOS开发编程 & 发展交流 (开发室) » 一个pcx256色程序(古董) 查看 1,209 回复 3
楼 主 一个pcx256色程序(古董) 发表于 2005-10-29 13:07 ·  中国 重庆 渝中区 电信
银牌会员
★★★
积分 2,165
发帖 730
注册 2004-04-21 00:00
22年会员
UID 22966
性别 男
状态 离线
typedef struct {

char PcxFlag ;
char Version ;
char Encoding ;
char Bitsperpixel ;
int Xmin ;
int Ymin ;
int Xmax ;
int Ymax ;
int Hres ;
int Vres ;
char palette ;
char reserved ;
char planes ;
int width ;
int palettetype ;
char filler ;
}PCXHEAD;

void pcx256display(int x,int y,int status, char * name)
{
FILE *phonefp;
unsigned long phonewidth,phoneheigh;
unsigned char phonedata,phoneline;
long phonelen,phonetemp,linebit;
unsigned char ColorTable ;
int i,j , m , b;
unsigned char data;
int count, total , height ;

PCXHEAD pcxheader;

if((phonefp=fopen(name,"rb"))==NULL){
//printf("cannot open file %s \n",name);
exit(0);
}

fseek( phonefp ,-768L,SEEK_END);
fread( ColorTable , 1 , 768 , phonefp ) ;



fseek( phonefp ,0L,SEEK_SET);
fread( (char *)&pcxheader , sizeof(PCXHEAD), 1, phonefp) ;

height = pcxheader.Ymax - pcxheader.Ymin +1 ;

fseek( phonefp , 128L , SEEK_SET ) ;
//printf("+++++++++++++++++++++++++++++++++%d,%d\n",height,pcxheader.width);
//getch();

if(status)
{
setfillstyle(1,BLACK); //hm_disable
bar(x+pcxheader.width-1,y+6,x+pcxheader.width+4,y+height+4); //hm_disable
bar(x+4,y+height,x+pcxheader.width+4,y+height+4); //hm_disable
}

for( i = 0 ; i<height ; i++)
{
total = 0 ;
while( total < pcxheader.width )
{
count = 1 ;
data = fgetc(phonefp);

if ( 0xc0 == ( 0xc0 & data) )
{
count = 0x3f & data ;
data = fgetc( phonefp );
}

for( j = 0 ; j < count ; j++)
if(j+total!=pcxheader.width-1) putpixel(x+j+total , y+i , data);

total += count ;
}
}

fclose(phonefp);
}
2 发表于 2005-10-29 20:48 ·  中国 广东 广州 海珠区 电信
金牌会员
★★★★
D◎$ Fαп
积分 4,562
发帖 1,883
注册 2004-01-19 00:00
22年会员
UID 15812
性别 男
来自 广东广州
状态 离线
真的很古董,只能怀旧一下。可是现在还有谁用PCX图像啊?!
----====≡≡≡≡ 我的至爱,永远是MSDOS!≡≡≡≡====----
3 发表于 2005-11-23 17:48 ·  中国 北京 联通
高级用户
★★
积分 652
发帖 193
注册 2005-09-25 00:00
20年会员
UID 42822
状态 离线
当然有人用了!任天堂 FC 红白机模拟器 Nesticle 和世嘉5代 16bi t游戏机模拟器 Genecyst 都用 PCX 保存游戏截图!

[ Last edited by alchemist on 2005-11-23 at 17:51 ]
4 发表于 2007-05-17 22:05 ·  中国 湖北 潜江 电信
高级用户
★★★
积分 894
发帖 411
注册 2007-02-17 12:15
19年会员
UID 79697
性别 男
状态 离线
怎么用啊?
@set c= 不知则觉多,知则觉少,越知越多,便觉越来越少. --- 知多少.
@for,/l,%%i,in,(1,1,55)do,@call,set/p=%%c:~%%i,1%%<nul&ping/n 1 127.1>nul


论坛跳转: