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

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

20.03.2017, 10:23. Показов 3795. Ответов 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
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru