我试图在画布上用不同的颜色绘制点。基本上,蓝色为当前点,绿色为当前点之前的点,红色为当前点之后的点。请看代码
private void setElemColor(GC g, int pos) {
int currentPoint = messtisch.getPointPos(); //current point, number
if (pos > currentPoint) {
g.setForeground(cRed);
} else if (pos == currentPoint) {
g.setForeground(cBlue);
} else if (pos < currentPoint) {
g.setForeground(cGreen);
}
}
提高理解力。这很完美。但是我试图用Point代替Int来做同样的事情,而没有使逻辑正确。如
private void setPointColor(GC g, Point cpoint) {
if (cpoint.equals(currentPoint)) { // the current point itself
g.setForeground(cBlue);
} else if (!cpoint.equals(currentPoint)) {
if (cpoint.x > currentPoint.x || cpoint.y > currentPoint.y) {
g.setForeground(cRed);
} else {
g.setForeground(cGreen);
}
}
}
请帮助我有关。
最佳答案
我通过使用新的ArrayList并将其保存到已经是currentPoint的位置来完成。然后以绿色绘制它们作为旧点。这是我的代码示例。
private ArrayList<Point> oldpoints = new ArrayList<Point>();
private void setPointColor(GC g, Point cpoint) {
if (oldpoints.contains(cpoint)) {
g.setForeground(cGreen);
} else if (!oldpoints.contains(cpoint)) {
g.setForeground(cRed);
}
if (cpoint.equals(currentPoint)) {
g.setForeground(cBlue);
oldpoints.add(cpoint);
}
}
请提出另一种方法,因为这种方法效率不高且不合逻辑。预先感谢您。
关于java - 根据 Canvas 上的位置((x,y)坐标)用不同的颜色绘制SWT点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/46112985/