学习新环境真是困难重重啊,目前有两个问题我自己实在是找不到答案了,如果大家谁了解如何解决,还望不吝赐教,万分感谢
均使用allegro工程:
1.汉字输出问题:
(1)FILE 型指针是否存在?
我使用FILE *fp;语句程序报错FILE未定义;
(2)16位数字报错
我使用0xa0 程序报错;
程序如下:
#include <allegro.h>
#include "stdio.h"
void init();
void deinit();
int main() {
init();
int i,j,k;
int white=maloc(255,255,255);
char mat[16][2],chinease[3]="我";
FILE *HZK;
if((HZK=fopen("hzk16","rb"))==NULL)exit(0);
i=chinease[0]-0xa0;j=chinease[1]-0xa0; /*获得区码与位码*/
fseek(HZK,(94*(i-1)+(j-1))*32l,SEEK_SET); /*将文件指针指向字模的初始位置*/
fread(mat,32,1,HZK);
for(j=0;j<16;j++)
for(i=0;i<2;i++)
for(k=0;k<8;k++) /*扫描这个字节的每一位,如果是1则显示一个点,否则不显示*/
if(mat[j][i] & (0x80>>k))/*0x80相当于:10000000 和字节作与运算时
如果最高位是1则与运算的结果是1,如果是0则与运算结果为0
0x80>>k是向右移位,当k==1时右移结果:01000000再与运算
如此循环完这个字节*/
putpixel(screen, i*8+k, j, white);
while (!key[KEY_ESC]) {
/* put your code here */
}
deinit();
return 0;
}
END_OF_MAIN()
void init() {
int depth, res;
allegro_init();
depth = desktop_color_depth();
if (depth == 0) depth = 32;
set_color_depth(depth);
res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
if (res != 0) {
allegro_message(allegro_error);
exit(-1);
}
install_timer();
install_keyboard();
install_mouse();
/* add other initializations here */
}
void deinit() {
clear_keybuf();
/* add other deinitializations here */
}
--------------------------------------------------------------------
2.位图输出问题:
(1)同样是24位位图同样的程序为什么有的能输出有的不能?
a同样是用load_bmp();
b同样使用blit()等函数;
c用样是使用allegro的工程;
d一旦使用不可用的图片后,系统会弹出报错窗口;
(2)程序中的透明色(真彩模式下为亮粉色,红蓝最大绿为0)的位图如何制作 ?
a我用 windows自带的画图中无法实现,取色填充后颜色不对,程序中也不 能被忽略,如toumingse/pic3所示效果
b同样使用画图,我尝试打开pic1后,将欲填充图片复制粘贴过来,会只能 显示黑色部分
c是否有专业软件制作图片?
附件为以上问题涉及的图片