序采用最简单的“图案充填”方案,即各条“链”上的像素点皆采用该“链”上的第一个像素的颜色。程序中的常数eye-space表示“偏左图”和“偏右图”之间的偏差,bo-dot是表明“链”的首或尾的指针标志。 该程序寄生在windows 3.1中的pbrush软件上。借助于它来构筑立体形体(即立体形体水平剖面高低坐标数据文件图8),设计原始图案(图9)。程序运行后,逐行输入并处理以上两个文件中的图形,然后输出立体画结果文件(图10)。最后,用pbrush来观赏立体画result.bmp。当然,要设计出令人赏心悦目的立体画,必须在立体形体和图案素材的选择和搭配上做到天衣无缝,独具匠心。 @@09a04007.gif;图8@@ @@09a04008.gif;图9@@ @@09a04009.gif;图10程序清单@@ /*--from 1995.4.19--to 1995.5.18----*/include<stdio.h> #define compression 0 #define size-of-bitmapfileheader 14 #define size-of-bitmapinfoheader 40 #define size-of-rgbquad 4 #define pixel-date-offset 14+40+4*16 /*size-of-bitmapfileheader+size-of-bitmapinfoheader+bits-per-pixel *num-color*/ #define num-color 16 #define num-line 400 #define width 640 #define bits-per-pixel 4 #define pixel-per-byte 2 /*8/bits-per-pixel*/ #define byte-per-line 320 /*((width*bits-per-pixel-1)/32+1)*4 */ #define no-dot width+1 #define eye-space 128 struct{ unsignde char color ; unsigned int pri-x ; unsigned int nxt-x ; }dot[width]; main() { struct tagbitmapfileheader{ unsigned char bftype1,bftype2; /* always equal tobm*/ unsigned long int bfsize; /*size of file */ unsigned int bfreserved1,bfreserved2; /* set to zero */ unsiged long int bfoffits; /*byte offset from bitmapfileheader to bitmap p ixel data in the file */ }bitmapfileheader; struct tagbitmapinfoheader{ unsigned long int bisize,/* size of bitmapinfoheader */ biwidth;/* width in pixels biheight;/* height in pixels */ unsigned int biplanes, /* always 1 */ bibitcount; /* color bits per pixel must be 1,4,8 or 24 */ unsigned long int bicompression, /*bi-rgb,bi-rle 8 or 4*/ bisizeimage, /*total bytes in image */ bixpelspermeter,/* 0,or opt,h res. */ biypelspermeter,/* 0,or opt,h res. */ biclrused, /* normally 0,can set a lower no. colors than bibitcount */ biclrimportant; /* normally 0 */ }bitmapinfoheader; struct tagrgbquad{ unsigned char rgbblue, /* blue intensity,0-255 */ rgbgreen, /* green intensity,0-255 */ rgbred, /* red intensity,0-255 */ rgbreserved; /* reserved,set to zero */ }rgbquad[num-color]; char *fn-layer=layer.bmp; char *fn-org=origin.bmp; char *fn-result=result.bmp; file *flayer,*forigin, *fresult; unsigned char tmp-byte1,tmp-byte2; unsigned int line,i-byte,i-pixel,x; unsigned int layer; int left-x,right-x;tmp-x; unsigned long int cur-offset; unsigned char h[width],org-color[width]; puts(---wintrick---); puts(---by li jisong ---); if( (flayer=fopen(fn-layer,rb) )!=null) { fread(&bitmapfileheader,size-of-bitmapfilehader,1,flayer); fread(&bitma
上一页 [1] [2] [3] [4] 下一页