2014-10-06 2 views
2

Мне нужно сделать нарисованную прямоугольную мышь прозрачной, чтобы видеть рабочий стол. Следующий код рисует мой прямоугольник. Что я должен добавить, чтобы получить это? Спасибо за помощьСделать прямоугольник прозрачным

public void start(Stage primaryStage) { 
    Group group = new Group(); 

    Rectangle rect = new Rectangle(20,20,200,200); 

    rect.setArcHeight(15); 
    rect.setArcWidth(15); 

    rect.setStroke(Color.BLACK); 
    group.getChildren().add(rect); 

    Scene scene = new Scene(group, 300, 200); 
    primaryStage.setScene(scene); 
    primaryStage.show(); 
} 
+0

Вы можете уточнить? Если вы хотите увидеть рабочий стол, вам нужно, чтобы окно было прозрачным, но, возможно, это не то, что вы имеете в виду? –

ответ

1

Поскольку экран график в JavaFX в иерархической структуре, чтобы показать рабочий стол, Вы должны также сделать Stage и Scene прозрачными, а также использовать форму «арифметику»:

@Override 
public void start(Stage stage) { 
    Group group = new Group(); 
    Rectangle rect = new Rectangle(0, 0, 350, 300); 
    Rectangle clip = new Rectangle(20, 20, 200, 200); 
    clip.setArcHeight(15); 
    clip.setArcWidth(15); 

    Shape shape = Shape.subtract(rect, clip); 

    shape.setFill(Color.GRAY); 
    group.getChildren().add(shape); 
    Scene scene = new Scene(group); 
    scene.setFill(Color.TRANSPARENT); 
    stage.initStyle(StageStyle.TRANSPARENT); 
    stage.setScene(scene); 
    stage.show(); 
} 

Позже вы можете добавить перемещаемую функцию на панель/группу.

+0

Спасибо за помощь. Перетаскиваемая функция - моя следующая цель. Должен ли я открыть новый вопрос, потому что я не могу его получить? –

+0

@ StéphaneGROSSMANN см. [Этот ответ] (http://stackoverflow.com/a/22960073) за подсказку. Если это не помогает, вы можете открыть новый вопрос. –

+0

Я положил это http://stackoverflow.com/questions/26254354/resizing-a-substraction-shape Но ответа нет :-(Tks в любом случае –

0

Если я вас правильно понимаю, как я не получаю эту мышь части «нарисованного прямоугольник мыши прозрачной» - ваш прямоугольник должен быть прозрачным?

Вы должны изменить непрозрачность прямоугольника: rect.opacityProperty(). Set (0.5);

+0

, если вы имеете в виду это: rect.setStroke (новый javafx.scene.paint.Color (0, 0, 0, 0)); превращает его в черный –

+0

С 1, прямоугольник тоже черный :-( –

+1

Проверьте отредактированный ответ. :) К сожалению, вы не можете просто применить прозрачный цвет. Вы должны указать альфа-канал прямоугольника (странный, странный ...). Таким образом, ближе к 0.0 более прозрачный 1.0 является твердым. –

1

Если вы просто хотите, внутренняя часть прямоугольника должна быть прозрачной, то все, что вам нужно, это

rect.setFill(Color.TRANSPARENT); 

, но я не совсем уверен, если это то, что вы имеете в виду.

 Смежные вопросы

  • Нет связанных вопросов^_^