【发布时间】:2017-09-29 23:20:01
【问题描述】:
我有一个基于 SWT 的 JOGL 2D 图表测试,带有四个 GLCanvas:图例、底轴、左轴和系列。该组件嵌入在 SWT Shell 中,并通过生成的“信号”从线程定期更新。
这是外壳的屏幕截图:
如您所见,图例、左轴和系列区域已正确更新,但在创建外壳后底轴不可见,必须调整外壳的大小才能最终显示底轴:
这是显示底部轴(文本)的代码:
bottomAxisAreaGLContext.getGL().getGL2().glColor3f(fontColor.getRed() / 255, fontColor.getGreen() / 255, fontColor.getBlue() / 255);
for (int i = 0; i < verticalGridLinesPositions.size(); i++) {
int position = verticalGridLinesPositions.get(i).intValue();
double value = (i + 1) * (windowTimeWidth) / (verticalGridLinesPositions.size() + 1);
String valueString = decimalFormatter.format(value).replaceAll("E0$", "");
int valueStringLength = glut.glutBitmapLength(getFontNumber(), valueString);
bottomAxisAreaGLContext.getGL().getGL2().glRasterPos3f(position - valueStringLength / 2, getBottomAxisHeight() / 2 - getFontHeight() / 2, 0);
glut.glutBitmapString(getFontNumber(), valueString);
}
类似的方法用于显示左轴。
我不明白为什么必须调整外壳的大小才能显示底轴。
为什么它适用于所有其他 GLCanvas 而不适用于底轴 GLCanvas?
有什么想法吗?
【问题讨论】:
-
只是为了说明这个问题在 Windows 上不会发生。