如何使用 Xlib 从窗口上的文件中绘制图像
这是我的代码:
int main()
{
Display *d = XOpenDisplay(0);
unsigned int bitmap_width, bitmap_height;
int x, y;
Pixmap bitmap;
if ( d )
{
Window w = XCreateWindow(d, DefaultRootWindow(d), 0, 0, 400,
400, 0, CopyFromParent, CopyFromParent,CopyFromParent, 0, 0);
GC gc = XCreateGC ( d, w, 0 , NULL );
int rc = XReadBitmapFile(d, w,
"1.bmp",
&bitmap_width, &bitmap_height,
&bitmap,
&x, &y);
XCopyPlane(d, bitmap, w, gc,0, 0, bitmap_width, bitmap_height,0, 0, 1);
XMapWindow(d, w);
XFlush(d);
sleep(10);
}
return 0;
}
但是窗口是清晰的。我不明白为什么它不起作用。我哪里做错了?
This is my code:
int main()
{
Display *d = XOpenDisplay(0);
unsigned int bitmap_width, bitmap_height;
int x, y;
Pixmap bitmap;
if ( d )
{
Window w = XCreateWindow(d, DefaultRootWindow(d), 0, 0, 400,
400, 0, CopyFromParent, CopyFromParent,CopyFromParent, 0, 0);
GC gc = XCreateGC ( d, w, 0 , NULL );
int rc = XReadBitmapFile(d, w,
"1.bmp",
&bitmap_width, &bitmap_height,
&bitmap,
&x, &y);
XCopyPlane(d, bitmap, w, gc,0, 0, bitmap_width, bitmap_height,0, 0, 1);
XMapWindow(d, w);
XFlush(d);
sleep(10);
}
return 0;
}
But window is clear. I do not understand why it is not working. Where did I make mistake?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
通常,您创建自己的加载程序来从您需要的任何图像格式中获取像素。
然后,您使用
XCreateImage
制作一个XImage
,然后使用XPutImage
将其放置在使用XCreatePixmap< 生成的屏幕外像素图上。 /代码>。获得像素图后,您可以使用 XCopyArea 将其绘制到窗口。您必须在任何公开事件中重新复制图像。
Generally you create your own loader to grab the pixels out of whatever image format you need.
Then, you use
XCreateImage
to make anXImage
, which you put, usingXPutImage
, on an offscreen pixmap you generate withXCreatePixmap
. Once you have your pixmap, you paint it to the window withXCopyArea
. You must re-copy the image on any expose events.