FLTK 绘图函数使用哪个来源?小工具还是 Window?
Which origin does FLTK draw function use ? Widget or Window?
我正在尝试创建自定义转速计小部件。当我自己测试时,一切看起来都很好。
但是当我尝试在父 window 的不同位置绘制它时,它似乎总是使用 window 的原点而不是小部件的原点绘制,无论我传递的 x 或 y 值是多少给构造函数。
调用构造函数后的 printf() 确认小部件“知道”预期的 x 和 y。
这是默认行为吗?我认为绘图函数使用小部件 0,0 而不是 window。我是否需要在绘图函数中显式调用 x() 和 y() 并应用转换来更正此问题?
看来你需要自己翻译出处。在 documentation 它说:
Making Your Own Boxtypes
...
The Drawing Function
The drawing function is passed the bounding box and background color for the widget.
A simple drawing function might fill a rectangle with the given color and then draw a black outline:
void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
fl_color(c);
fl_rectf(x, y, w, h);
fl_color(FL_BLACK);
fl_rect(x, y, w, h);
}
你可以看到他们在 x, y
而不是 0, 0
。
(对于上下文,盒子只是一种特定类型的小部件)。
是的,没错。 FLTK 1.x 中的所有坐标都是相对于 window 的。子window创建自己的坐标space,即子window中的坐标是相对于子window,而不是主window.
我正在尝试创建自定义转速计小部件。当我自己测试时,一切看起来都很好。 但是当我尝试在父 window 的不同位置绘制它时,它似乎总是使用 window 的原点而不是小部件的原点绘制,无论我传递的 x 或 y 值是多少给构造函数。
调用构造函数后的 printf() 确认小部件“知道”预期的 x 和 y。
这是默认行为吗?我认为绘图函数使用小部件 0,0 而不是 window。我是否需要在绘图函数中显式调用 x() 和 y() 并应用转换来更正此问题?
看来你需要自己翻译出处。在 documentation 它说:
Making Your Own Boxtypes
...
The Drawing Function
The drawing function is passed the bounding box and background color for the widget.
A simple drawing function might fill a rectangle with the given color and then draw a black outline:
void xyz_draw(int x, int y, int w, int h, Fl_Color c) {
fl_color(c);
fl_rectf(x, y, w, h);
fl_color(FL_BLACK);
fl_rect(x, y, w, h);
}
你可以看到他们在 x, y
而不是 0, 0
。
(对于上下文,盒子只是一种特定类型的小部件)。
是的,没错。 FLTK 1.x 中的所有坐标都是相对于 window 的。子window创建自己的坐标space,即子window中的坐标是相对于子window,而不是主window.