1
私は間違っていることにかなり固執しています。私はサンプルコードをコピーしようとしましたが、色を変更しようとしました。ここに私のコードは次のとおりです。Xlibは描画をしません
//Headers
#include <stdio.h>
#include <stdlib.h>
#include <X11/Xlib.h>
#include <X11/Xatom.h>
int main(int argc, char *argv[])
{
//Vars to create a window
Display *dis;
int screen;
Window win;
XEvent event;
//Graphics content
XGCValues values;
unsigned long valuemask = 0;
GC gc;
//To store mouse location
int mouseX[2], mouseY[2];
//Stores screen dimensions
XWindowAttributes xwa;
int screenHeight, screenWidth;
//Colors
Colormap colormap;
XColor backgroundColor, white;
//Checks for open display
dis = XOpenDisplay(NULL);
//Displays error
if(dis == NULL)
{
fprintf(stderr, "Cannot open display\n");
exit(1);
}
//Sets screen
screen = DefaultScreen(dis);
colormap = DefaultColormap(dis, screen);
//Background color
XParseColor(dis, colormap, "#75677e", &backgroundColor);
XAllocColor(dis, colormap, &backgroundColor);
//White
XParseColor(dis, colormap, "#ffffff", &white);
XAllocColor(dis, colormap, &white);
//Creates window
win = XCreateSimpleWindow(dis, RootWindow(dis, screen), 100, 100, 500, 300, 1, BlackPixel(dis, screen), backgroundColor.pixel);
//Changes window to be full screen
//Atom atoms[2] = { XInternAtom(dis, "_NET_WM_STATE_FULLSCREEN", False), None };
//XChangeProperty(dis, win, XInternAtom(dis, "_NET_WM_STATE", False), XA_ATOM, 32, PropModeReplace, (unsigned char *)atoms, 1);
//Allocates graphics content
gc = XCreateGC(dis, win, valuemask, &values);
XSetLineAttributes(dis, gc, 2, LineSolid, CapButt, JoinBevel);
XSetFillStyle(dis, gc, FillSolid);
XSync(dis, False);
//Stores screen dimensions
//TODO: test
XGetWindowAttributes(dis, win, &xwa);
screenWidth = xwa.width;
screenHeight = xwa.height;
//Inner circle
//XFillArc(dis, win)
XSetForeground(dis, gc, BlackPixel(dis, screen));
XFillRectangle(dis, win, gc, 0, 100, 50, 50);
//Listens for input
XSelectInput(dis, win, ExposureMask | KeyPressMask);
//Maps window
XMapWindow(dis, win);
while(1)
{
XNextEvent(dis, &event);
}
XCloseDisplay(dis);
return 0;
}
私はそれを実行したとき、私は、エラーBadDrawableか何かについて何をコンソールにエラーを取得していません。ウィンドウを開いても問題ありませんが、画面に四角形は表示されません。また、線、点、弧を描くようにしました。
マップされていないウィンドウ上での描画は無用であり、それがマッピングされていたら、あなたは何を描くことはありません。 –