我试图在画布上用不同的颜色绘制点。基本上,蓝色为当前点,绿色为当前点之前的点,红色为当前点之后的点。请看代码

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/

10-09 15:13