画布不会呈现不透明状态

时间:2019-02-25 10:43:37

标签: java javafx

我正在尝试使用其GraphicsContext在画布上呈现基本内容。我为笔划设置了不透明的颜色,但屏幕上的结果略透明。

public class Spielwiese extends Application {

   public static void main(String... args) {
      launch(args);
   }

   @Override
   public void start(Stage window) {
      Canvas canvas = new Canvas(800, 600);
      window.setScene(new Scene(new Pane(canvas)));
      window.show();

      GraphicsContext g = canvas.getGraphicsContext2D();
      g.setFill(Color.BLACK);
      g.fillRect(0, 0, canvas.getWidth(), canvas.getHeight());
      g.setStroke(Color.WHITE);
      g.strokeRect(16, 16, 64, 64);
   }

}

结果: enter image description here

我尝试使用new Color(1, 1, 1, 1)设置颜色的透明度,但效果相同。
但是,通过多次调用g.strokeRect(16, 16, 64, 64);使其多次笔触,我设法获得了一个不透明的矩形,但是我不喜欢这种“解决方案”。
有没有一种方法可以将不透明的形状描画到画布上而无需多次抚摸呢?

编辑:当我复制语句g.strokeRect(16, 16, 64, 64);并将其中的4个放在start方法的末尾而不是一个时,我得到一个不透明的矩形:
enter image description here

1 个答案:

答案 0 :(得分:2)

您应该添加g.setStrokeWidth(2.0);或类似的代码。如果您绘制的线很细,当它们与像素边界不完全对齐时,它们将显示为半透明。

有关详情,请参见:https://openjfx.io/javadoc/11/javafx.graphics/javafx/scene/shape/Shape.html