【问题标题】:How to make text solid over an ellipse using transparency specifically using Opacity如何使用透明度特别是使用不透明度使文本在椭圆上成为实心
【发布时间】:2016-03-17 21:56:50
【问题描述】:

所以几天来我一直在努力解决这个问题,但我无法让 Text text = new Text("Name"); 在我的椭圆上清楚地显示我正在尝试使用 setOpacity 没有别的请,所以其他建议将是忽略。我已经尝试了好几个星期,但它开始让我很生气,这是我最接近它的代码:

import javafx.application.Application;
import javafx.scene.shape.Ellipse;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class ellipseICE07 extends Application {

    @Override
    public void start(Stage stage){
       Pane pane = new Pane();

       Text text = new Text("Name");
       text.setLayoutY(205);
       text.setLayoutX(255);
       text.setStroke(Color.BLUE);
       text.setOpacity(2.0);
       text.setFont(Font.font("Cambria", FontWeight.BOLD, 34));
       pane.getChildren().add(text);

       for(int o = 0; o < 180; o += 10){
           Ellipse ep = new Ellipse(300, 200, 100, 3);
           ep.setRotate(o);
           ep.setFill(null);
           ep.setOpacity(0.3);
           ep.setStroke(Color.RED);
           pane.getChildren().add(ep);
       }




       for(int i = 0; i < 180; i += 5){
           Ellipse ep1 = new Ellipse(300, 200, 100, 3);
           ep1.setRotate(i);
           ep1.setFill(null);
           ep1.setOpacity(0.3);
           ep1.setStroke(Color.RED);
           pane.getChildren().add(ep1);

       }


       Scene scene = new Scene(pane, 600, 400);
       stage.setScene(scene);
       stage.show();

    }

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

}

请帮忙。

【问题讨论】:

  • “我正在尝试使用 setOpacity 没有别的,所以其他建议将被忽略。”问题是,不透明度实际上不是问题。那你想让我们做什么?
  • 当我在 netbeans 或 eclipse 中运行程序时,会出现什么问题?那么,如果你要走另一条非常简单的路线,你会怎么做,我错过了什么?
  • 在添加省略号后添加文本,使其显示在顶部?

标签: java text javafx opacity ellipse


【解决方案1】:

那么这个版本的代码呢?这是否更接近您的预期?

import javafx.application.Application;
import javafx.scene.shape.Ellipse;
import javafx.scene.Scene;
import javafx.scene.layout.Pane;
import javafx.scene.paint.Color;
import javafx.scene.text.Font;
import javafx.scene.text.FontWeight;
import javafx.scene.text.Text;
import javafx.stage.Stage;

public class ellipseICE07 extends Application {

    @Override
    public void start(Stage stage) {
        Pane pane = new Pane();

        Text text = new Text("Name");
        text.setLayoutY(205);
        text.setLayoutX(255);
        text.setStroke(null);
        text.setFill(Color.BLUE);
//      text.setOpacity(2.0);
        text.setFont(Font.font("Cambria", FontWeight.BOLD, 34));

        for (int o = 0; o < 180; o += 10) {
            Ellipse ep = new Ellipse(300, 200, 100, 3);
            ep.setRotate(o);
            ep.setFill(null);
//          ep.setOpacity(0.3);
            ep.setStroke(Color.RED);
            pane.getChildren().add(ep);
        }

        for (int i = 0; i < 180; i += 5) {
            Ellipse ep1 = new Ellipse(300, 200, 100, 3);
            ep1.setRotate(i);
            ep1.setFill(null);
//          ep1.setOpacity(0.3);
            ep1.setStroke(Color.RED);
            pane.getChildren().add(ep1);

        }

        pane.getChildren().add(text);

        Scene scene = new Scene(pane, 600, 400);
        stage.setScene(scene);
        stage.show();

    }

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

}

【讨论】:

  • LOL 伙计,我不敢相信这就是我所要做的我尝试了 addALL(ep, ep1, text);但由于 for 循环周围的括号不起作用,非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-30
  • 1970-01-01
  • 1970-01-01
  • 2014-11-23
  • 2011-12-19
  • 1970-01-01
相关资源
最近更新 更多