显示图片
- 将图片信息加载到内存中,这里直接在内存中生成图片
int i, j; unsigned char *image32=(unsigned char *)malloc(width*height*4); unsigned char *p=image32; for(i=0; i<width; i++) { for(j=0; j<height; j++) { if((i<256)&&(j<256)) { *p++=rand()%256; // blue *p++=rand()%256; // green *p++=rand()%256; // red } else { *p++=i%256; // blue *p++=j%256; // green if(i<256) *p++=i%256; // red else if(j<256) *p++=j%256; // red else *p++=(256-j)%256; // red } p++; } }
产生这个图片算是一个二维数组使用的基础功,还是比较漂亮。大家逻辑不清楚,可以多花点时间修改试试看效果。
2. 创建一张图片
c return XCreateImage(display, visual, DefaultDepth(display,DefaultScreen(display)), ZPixmap, 0, image32, width, height, 32, 0);
需要注意,这里image32参数是malloc申请的内存空间,但是 XCreateImage 接管了这个地址,所以不用我们手动 free,不然会报内存错误。
- 绘制图片
XPutImage(display, window, DefaultGC(display, 0), ximage, 0, 0, 0, 0, width, height);