我正在使用C中X11库中的XDrawPoint(d, w, DefaultGC(d, s), x, y) ;
在屏幕上绘制一个点。 x
和y
是将在其中绘制点的x和y坐标。
问题是,如果要绘制XDrawPoint(d, w, DefaultGC(d, s), -x, y) ;
,则该点不会显示在屏幕上。我认为这是因为初始位置设置为0,0使得该点消失了。
是否可以在屏幕中间设置起始位置,所以在绘制负的x和y坐标时,这些点仍会显示吗?
谢谢
最佳答案
AFAIK,调用XDrawPoint()
时无法从左上角更改原点。
尽管XDrawPoints()
允许您指定CoordModePrevious
的模式来指定相对于前一个坐标,但我假设您不想在每个点之前在窗口中心绘制一个点。
实现绘图中心原点的一种可能方法是自己计算并将点添加为偏移量
使用简单的结构:
typedef struct {
int x;
int y;
} ORIGIN;
ORIGIN origin;
然后将其设置到窗口
w
的中间:Window urw; // unused root window
unsigned int ux, uy, ub, ud; // unused width, height, border, depth
unsigned int w, h;
XGetGeometry(d, w, &urw, &ux, &uy, &w, &h, &ub, &ud);
origin.x = w/2;
origin.y = h/2;
最后将其用作绘图的偏移量:
XDrawPoint(d, w, DefaultGC(d, s), origin.x+x, origin.y+y);
当然,如果要调整窗口大小,则必须重新计算原点,并且除以2时,奇数大小将被截断。
关于c - 如何使用XDrawPoint设置起始位置,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25983149/