gpt4 book ai didi

c - 如何在 xlib 的窗口中显示 xmp 图像文件? (我用C编码)

转载 作者:行者123 更新时间:2023-11-30 16:11:12 25 4
gpt4 key购买 nike

我正在用 C 语言创建国际象棋,我需要在每次移动后打印棋盘。我已经成功地使用字符串作为 block 来打印板,但我想用实际 block 的图像替换字符串。

我尚未找到在 X11 窗口中显示图像的解决方案。

for(i=0;i<8;i++){
for(j=0;j<8;j++){
if(board[i][j]>0){
if(board[i][j]==100)
strcpy(text,"Pawn");
else if(board[i][j]==300)
strcpy(text,"Knight");
else if(board[i][j]==400)
strcpy(text,"Bishop");
else if(board[i][j]==500)
strcpy(text,"Rook");
else if(board[i][j]==900)
strcpy(text,"Queen");
else if(board[i][j]==10000)
strcpy(text,"King");
XSetForeground(dpy,gc,whiteColor);
XDrawString(dpy,w,gc,j*100+20,i*100+50, text, strlen(text));

此代码片段使用白色文本显示白色部分。

最佳答案

X11 不直接支持绘制 XMP 文件。内置支持 pngjpeg 和旧格式(像素图、位图等)。第一步是将 XMP 转换为固定大小的图像(从代码来看,看起来像 20*50)。

一般来说,您想要预加载图像(从文件):

#include <Xm/Xm.h>

static unsigned char data[] = {
0x13, 0x00, 0x15, 0x00, 0x93, 0xcd, 0x55, 0xa5, 0x93, 0xc5, 0x00, 0x80,
0x00, 0x60

} ;
Screen s = DefaultScreenOfDisplay(d) ;
Pixel fg = XWhitePixelOfScreen(s) ;
Pixel bg = XBlackPixelOfScreen(s) ;
// Pixmap king_pm = XmGetPixmap(s, "king.png", fg, bg) ;
// Pixmap queen_pm = XmGetPixmap(s, "queen.png", fg, bg) ;

Pixmap king_pm = XCreatePixmapFromBitmapData(d, RootWindowOfScreen(s), data, 8, 8, fg, bg, 8) ;

然后绘图是基于将像素图复制到显示器中(使用上面的索引)。例如,画国王。

   XCopyArea(dpy, king_pm, gc, 0, 0, 20, 50, j*100+20,i*100+50) ;

免责声明:我没有办法测试此代码。您可能需要根据需要进行故障排除/修复。

关于c - 如何在 xlib 的窗口中显示 xmp 图像文件? (我用C编码),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58677467/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com