用cairo描画一条直线,并且用Xlib显示处理啊的代码
时间: 2024-03-23 20:43:54 浏览: 85
以下是一个使用Cairo绘制一条直线,并使用Xlib显示的示例代码:
```c
#include <cairo.h>
#include <cairo-xlib.h>
#include <X11/Xlib.h>
int main()
{
Display *dpy;
Window root, win;
XEvent event;
int scr;
dpy = XOpenDisplay(NULL);
if (!dpy) {
fprintf(stderr, "Failed to open display.\n");
return 1;
}
scr = DefaultScreen(dpy);
root = RootWindow(dpy, scr);
win = XCreateSimpleWindow(dpy, root, 0, 0, 640, 480, 0, 0, WhitePixel(dpy, scr));
XSelectInput(dpy, win, StructureNotifyMask);
XMapWindow(dpy, win);
while (1) {
XNextEvent(dpy, &event);
if (event.type == MapNotify)
break;
}
cairo_surface_t *surface;
cairo_t *cr;
surface = cairo_xlib_surface_create(dpy, win, DefaultVisual(dpy, scr), 640, 480);
cr = cairo_create(surface);
cairo_set_source_rgb(cr, 1.0, 0.0, 0.0); // 设置绘制颜色为红色
cairo_set_line_width(cr, 2.0); // 设置线宽为2
cairo_move_to(cr, 100, 100); // 设置起点坐标
cairo_line_to(cr, 500, 400); // 设置终点坐标
cairo_stroke(cr); // 绘制线段
cairo_surface_flush(surface);
cairo_destroy(cr);
cairo_surface_destroy(surface);
XFlush(dpy);
while (1) {
XNextEvent(dpy, &event);
if (event.type == KeyPress)
break;
}
XCloseDisplay(dpy);
return 0;
}
```
这个程序使用Xlib库创建一个大小为640x480的窗口,并使用Cairo绘制一条从(100,100)到(500,400)的红色直线,最后将绘制结果显示在窗口中。在程序运行过程中,如果窗口被关闭或者按下了键盘上的任意键,则程序会退出。
阅读全文