[英]How can I display an xmp image file in a window in xlib? (I'm coding in C)
我在 C 中創建國際象棋,每走一步都需要打印棋盤。 我已經設法使用字符串作為片段來打印電路板,但我想用實際片段的圖像替換字符串。
我還沒有找到在 X11 window 中顯示圖像的解決方案。
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 文件。 內置支持png
、 jpeg
和舊格式(像素圖、bitmap 等)。 第一步是將 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) ;
免責聲明:我沒有辦法測試此代碼。 您可能需要根據需要進行故障排除/修復。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.