広告
いまどきX11でプログラム書くことがあるかは知らないけど、
凄い昔にLinuxでGUIのプログラミングにトライしたときのサンプルコードを見つけたので掲載。
現代はQtとか使うのかな。
事前準備
1 |
$ sudo yum -y install libX11* |
x11.c
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 |
#include <X11/Xlib.h> #include <X11/Xutil.h> #include <stdio.h> #include <math.h> #define N 8 unsigned long GetColor( Display* dis, char* color_name ) { Colormap cmap; XColor near_color, true_color; cmap = DefaultColormap( dis, 0 ); XAllocNamedColor( dis, cmap, color_name, &near_color, &true_color ); return( near_color.pixel ); } int main( void ) { Display* dis; Window win; XSetWindowAttributes att; GC gc; XEvent ev; int x[N],y[N]; int i,j; dis = XOpenDisplay( NULL ); win = XCreateSimpleWindow( dis, RootWindow(dis,0), 100, 100, 256, 256, 5, WhitePixel(dis,0), BlackPixel(dis,0) ); att.backing_store = WhenMapped; XChangeWindowAttributes( dis, win, CWBackingStore, &att ); XSelectInput( dis, win, ExposureMask ); XMapWindow( dis, win ); do{ XNextEvent( dis, &ev); }while( ev.type != Expose ); gc = XCreateGC( dis, DefaultRootWindow(dis), 0, 0 ); XSetForeground( dis, gc, GetColor( dis, "green") ); for( i=0 ; i < N ; i++ ){ x[i] = (int)(128*cos(2*M_PI*i/N))+128; y[i] = (int)(128*sin(2*M_PI*i/N))+128; } for( i=0 ; i < N ; i++ ){ for( j=i+1 ; j < N ; j++ ){ XDrawLine( dis, win, gc, x[i], y[i], x[j], y[j] ); } } XFlush( dis ); getchar(); XDestroyWindow( dis , win ); XCloseDisplay( dis ); return(0); } |
実行結果
1 2 |
$ gcc -o x11 x11.c -I/usr/include -L/usr/lib -lX11 -lm $ ./x11 |
広告
広告