2016-08-19 2 views
1

Я импортировал язык обработки в Java, и я нарисовал простой дом.Как изменить размер чертежа в апплете обработки?

Как:

rect (75, 175, 350, 175); 

    // door 

    rect (225, 275, 50, 75); 

    // roof 
    triangle (250, 100, 75, 175, 425, 175); 

    // windows 
    rect (125, 200, 50, 50); 
    rect (325, 200, 50, 50); 

Я хочу, чтобы иметь возможность изменить размер изображения, или масштабировать это изображение при изменении размера окна. Сейчас размер окна всего 500 на 500, но если я разворачиваю окно, он не расширяет его.

Я попытался использовать scale(), но по какой-то причине он масштабировал изображение как миллисекунду, а затем вернул обратно в немасштабированную версию. Мой учитель java сказал мне, что метод draw при обработке обновляется примерно на 60 раз в секунду, но я не понимаю, почему это будет отличаться от первого раза.

+0

В будущем, пожалуйста, предоставьте [mcve], а не только несколько отключенных строк кода. Сейчас трудно точно сказать, что вы просите. –

ответ

0

Если вы хотите, чтобы ваш чертеж в масштабе с окном, вы будете должны основывать все свои координаты прочь от width и height переменных.

Например, предположим, что я рисую 200x200 круг внутри 200x200 окна:

size(200, 200); 
ellipse(100, 100, 200, 200); 

Если я затем изменить размер окна, чтобы 400x400, то я должен изменить параметры Я переходя в ellipse() функции:

size(400, 400); 
ellipse(200, 200, 400, 400); 

Это может быть раздражает (как вы испытываете), так что лучше просто основывают свои параметры от width и height переменных. Таким образом, всякий раз, когда изменяется размер вашего окна, обработка выполняет расчет для вас и чертеж, масштабированный с помощью вашего окна.

size(600, 600); 
ellipse(width/2, height/2, width, height); 

Это всего лишь пример, но этот процесс для вас будет то же самое: пройти и изменить любое значение, чтобы быть построен на width и height переменных вместо жестко закодированных чисел.

Более подробную информацию можно найти здесь: Using Variables - HappyCoding.io

(полное раскрытие: я написал, что учебник, но я думаю, что это объясняет то, что вы спрашиваете о)

Edit: Вы спросили о , поэтому я объясню это ниже. Но если вы пытаетесь установить размер вашего чертежа с размера своего окна, вы должны использовать вышеуказанный подход! Но поскольку это домашнее задание, вы ограничены тем, что делаете это так, как говорит учитель. Так или иначе ...

Давайте посмотрим на простой программе:

size(100, 100); 
ellipse(50, 50, 10, 10); 

Этот код просто создает окно с 100x100 размера, а затем рисует маленький эллипс в центре:

small circle

If мы хотели сделать круг большим, мы могли бы использовать функцию scale().Вы можете думать о функции scale() как автоматически умножая каждый параметр, который вы передаете на функцию рисования (например, ellipse() или rect()) любыми номерами, которые вы передаете в функцию scale().

Например, этот код не умножает каждое число по 2:

size(100, 100); 
scale(2); 
ellipse(50, 50, 10, 10); 

big off-center circle

Круг теперь в два раза больше, но это также больше не в центре. Это потому, что мы также умножаем 50,50 (центр окна) на 2, чтобы получить 100,100 (в нижнем правом углу окна). Чтобы исправить это, мы либо должны изменить 50,50:

size(100, 100); 
scale(2); 
ellipse(25, 25, 10, 10); 

Или мы могли бы использовать функцию translate() переместить координаты перед тем мы делаем шкалу:

size(100, 100); 
translate(50, 50); 
scale(2); 
ellipse(0, 0, 10, 10); 

Любой подход прекрасен, так что это действительно зависит от того, какой из них имеет больше смысла для вас. Теперь у нас большой центрированный круг, хотя мы все еще подбираем его до 10,10.

big centered circle

+0

Привет, Кевин, я знаю, как это сделать, но это не то, о чем просил мой учитель. Мой учитель сказал нам использовать метод в библиотеке обработки, и я обнаружил, что это действительно метод scale(). Вы должны установить для float и масштабировать чертежи к поплавкам. В любом случае спасибо! –

+0

@LarryJing Я отредактировал свой ответ, чтобы включить информацию о функции «scale()». –

+0

Спасибо, ты объяснил это очень хорошо. –

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