Форум программистов, компьютерный форум, киберфорум
Java: GUI, графика
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56

Изменение размеров Canvas вслед за размерами окна

20.03.2017, 10:23. Показов 3822. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
как автоматически менять размеры canvas при изменении размеров окна?
пишу такой код:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
....
public class Canv extends Application {
GraphicsContext gc;
public void start (Stage myStage) throws Exception{
 
myStage.setTitle("Title");
AnchorPane rootPane = new AnchorPane();
Scene myScene = new Scene(rootPane, 600, 400);
myStage.setScene(myScene);
 
myStage.setMaxWidth(1200.0);
myStage.setMaxHeight(900.0);
myStage.setMinWidth(600.0);
myStage.setMinHeight(400.0);
 
// Canvas
Canvas myCanvas = new Canvas(rootPane.getWidth(), rootPane.getHeight());
gc = myCanvas.getGraphicsContext2D( );
 
// границы холста по которым проверяю изменение
gc.strokeRect(2, 2, myCanvas.getWidth()-3, myCanvas.getHeight()-3);
 
// привязки холста
AnchorPane.setLeftAnchor(myCanvas, 40.0);
AnchorPane.setTopAnchor(myCanvas, 20.0);
AnchorPane.setRightAnchor(myCanvas, 10.0);
AnchorPane.setBottomAnchor(myCanvas, 20.0); 
rootPane.getChildren().add(myCanvas);
myStage.show(); }
public static void main(String[] args) { launch(args); } }
в итоге окно открывается размером как сцена 600 х 400
и холст рисуется размером как сцена 600 х 400, с соответсвующими привязками от края
т.е. сам холст выходит за границы окна
при изменении размеров окна ни чего не меняется

такой же результат если в строке 8 поменять rootPane на myScene
Java
1
 Scene myScene = new Scene(myScene, 600, 400);
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2017, 10:23
Ответы с готовыми решениями:

Изменение размеров рисунка при изменении размеров области вывода (окна)
Нужно сделать так, что бы рисунок менял свой размер при изменении окна... unit Unit1; interface uses Windows, Messages, SysUtils,...

Изменение размеров Image.Picture.LoadFromFile при изменении размеров окна
Подскажите, пожалуйста, какие функции для этого нужны.

Изменение размеров виджета при изменении размеров окна
Здравствуйте! Окно, созданное Qt (в моем случае QMainWindow), можно увеличивать и уменьшать в размерах. А как сделать так, чтобы...

2
77 / 77 / 77
Регистрация: 29.01.2017
Сообщений: 167
20.03.2017, 15:51
(ИМХО) AnchorPane может регулировать значения ширины и высоты от minWidth до maxWidth и от minHeight до maxHeight, а начальными принимаются значения prefWidth и prefHeight. Проблема в том что сеттеры этих свойств есть только у наследников Region, к которым Canvas не относится. Как вариант, можно изменять canvas при изменении размеров сцены.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
public class Canv extends Application {
 
    GraphicsContext gc;
 
    public static void main(String[] args) {
        launch(args);
    }
 
    public void start(Stage myStage) throws Exception {
 
        myStage.setTitle("Title");
        AnchorPane rootPane = new AnchorPane();
        Scene myScene = new Scene(rootPane, 600, 400);
        myStage.setScene(myScene);
 
        myStage.setMaxWidth(1200.0);
        myStage.setMaxHeight(900.0);
        myStage.setMinWidth(600.0);
        myStage.setMinHeight(400.0);
 
// Canvas
        Canvas myCanvas = new Canvas(600 - 40 - 10, 400 - 20 - 20);
        gc = myCanvas.getGraphicsContext2D();
 
        myScene.widthProperty().addListener((observable, oldValue, newValue) -> {
            myCanvas.setWidth(myScene.getWidth() - 40 - 10);
            gc.clearRect(0, 0, myCanvas.getWidth(), myCanvas.getHeight());
            gc.strokeRect(2, 2, myCanvas.getWidth() - 3, myCanvas.getHeight() - 3);
        });
        myScene.heightProperty().addListener((observable, oldValue, newValue) -> {
            myCanvas.setHeight(myScene.getHeight() - 20 - 20);
            gc.clearRect(0, 0, myCanvas.getWidth(), myCanvas.getHeight());
            gc.strokeRect(2, 2, myCanvas.getWidth() - 3, myCanvas.getHeight() - 3);
        });
 
// границы холста по которым проверяю изменение
        gc.strokeRect(2, 2, myCanvas.getWidth() - 3, myCanvas.getHeight() - 3);      // сработает только один раз, автообновляться при изменении размеров canvas'а не будет, это не векторное рисование
 
// привязки холста
        AnchorPane.setLeftAnchor(myCanvas, 40.0);
        AnchorPane.setTopAnchor(myCanvas, 20.0);
        rootPane.getChildren().add(myCanvas);
        myStage.show();
    }
}
1
0 / 0 / 5
Регистрация: 24.12.2016
Сообщений: 56
21.03.2017, 13:01  [ТС]
Спасибо Kadota и снова ты меня выручил

Добавлено через 20 часов 13 минут
А у меня еще несколько вопросов, больше философских:

1. Кроме javaFX, SWT, JOGL, spring Какие еще есть современные библиотеки java для работы с графикой.
Приведу пример допустим есть тепловая электростанция (ТЭЦ) внутри находится котел в который поступает природный газ сгорает -> нагревает воду -> вода превращается в пар который под давлением -> вращает крыльчатку паровой турбины -> вырабатывается энергия.
Требуется смоделировать котел который содержит тысячи мелких элементов, всякие змеевеки, фильтры, экономайзеры, испарители, справится ли javaFX и JOGL с такой задачей, чтобы можно было как в солиде, задать секущую плоскость и чик получить разрез, или чик и на разрезе показать некоторое тепловое оборудование, топочную камеру, и конечно же все это в 3d с фотореалистичными текстурами для максимальной наглядности.
Вот в 3dmax Sunflow система визуализации для фотореалистичных картинок написана на java интересно они тоже javaFX применяли?

И вопрос 2

2. Если есть декомпиляторы то получается можно программу раздекомпилровать получить исходный код, значит любой может взять программу ее раздекомпилировать допилить исходник потом скомпилировать и таким образом стащить интеллектуальную собственность???
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.03.2017, 13:01
Помогаю со студенческими работами здесь

Изменение размеров окна при изменении размеров виджета
Доброго времени суток, господа программисты! Возникла такая ситуация: есть окно программы, в нем виджет, который увеличивается при...

Масштабирование элементов Canvas при увеличении/уменьшении размеров окна
Здравствуйте! В общем, задача состоит в том, чтобы при расширении/сужении окна изменялся размер элементов канваса. Понятно, что можно...

Изменение размеров окна
моя програма виглядає так: http://img98.imageshack.us/img98/4091/screenshot1770.jpg когда я тикаю "Развернуть" то получаеца...

Изменение размеров окна
Народ! Помогите, пожалуйста, кто чем сможет :) Простейший вариант: мне нужно, чтобы при нажатии на кнопку (к примеру, ОК) изменялись...

Изменение размеров окна
Как контролировать изменение размера окна? Программа строит графики функций, я хочу сделать так, чтобы когда растягиваешь окно, оно...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Отображение реквизитов в документе по условию и контроль их заполнения
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "ПланированиеСпецтехники", разработанного в конфигурации КА2. Данный документ берёт данные из другого нетипового документа. . .
Фото всей Земли с борта корабля Orion миссии Artemis II
kumehtar 04.04.2026
Это первое подобное фото сделанное человеком за 50 лет. Снимок называют новым вариантом легендарной фотографии «The Blue Marble» 1972 года, сделанной с борта корабля «Аполлон-17». Новое фото. . .
Вывод диалогового окна перед закрытием, если документ не проведён
Maks 04.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать программный контроль на предмет проведения документа. . .
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru