Позаекранного малювання в Processing

Іноді вам потрібно намалювати щось перш ніж виводити це на екран У Processing це легко робиться за допомогою обєкта PGraphics

Як це робиться

Перше, що потрібно зробити – оголосити обєкт класу PGraphics на початку скетчу і ініалізіровать його у функції setup () з функцією Для реалізації анімації в скетчі я додав змінні x і y Ви можете очистити екран, клікнувши мишею

PGraphics pg

float x float y

void setup()

{

size( 640, 480 )

smooth()

pg = createGraphics( 64, 64, JAVA2D )

background( 255 ) imageMode( CENTER )

x = 0

y = 0

}

Перше, що ми зробимо у функції draw () – намалюємо кілька ліній в обєкті PGraphics Потім обєкт буде виведений на екран за допомогою функції image () У посднем фрагменті коду обчислюються значення змінних x і y для анімації скетчу

void draw()

{

pgbeginDraw()

pgbackground( 255, 0, 0, 8 ) pgsmooth()

for ( int i = 0 i &lt 8 i++ ) { pgstroke( random( 255 ), 0, 0 )

pgline( random( pgwidth ), random( pgheight ), random( pgwidth

), random( pgheight ) )

}

pgendDraw()

image( pg, x, y )

x += random( 4, 16 ) if ( x &gt width ) {

x = 0

y += random( 32, 64 ) if ( y &gt height ) {

y = 0

fill( 255, 32 ) noStroke()

rect( 0, 0, width, height )

}

}

}

Функція mousePressed () реалізує очистку екрана Колір фону стане білим або чорним з імовірністю 50 відсотків

void mousePressed()

{

if ( random( 100 ) &lt 50 ) {

background( 0 )

} else {

background( 255 )

}

}

В результаті ви отримаєте щось схоже на цей скріншот Подивіться, як він реагує на натискання кнопки миші

Як це працює

Функція createGraphics () створює контекст, на якому ви будете малювати Претавьте, що ви створюєте прозоре зображення Перші два параметри це ширина і висота зображення, третій – це рендерер Так як я малюю двомірні лінії, я використовував рендерер P2D Для початку малювання в обєкті PGraphics почніть з pgbeginDraw () Завершити малювання зображення можна за допомогою функції pgendDraw () Все, що знаходиться між цими рядками, буде намальовано в обєкті Для малювання доступні всі функції Processing, вам всього лише потрібно поставити перед імям функцій префікс Так, якщо ви хочете намалювати лінію в обєкті PGraphics, використовуйте pgline (), для малювання прямокутників – pgrect () і так далі для всіх функцій Для отримання ширини і висоти вашого обєкта використовуйте pgwidth і pgheight Зауважте, що для функції background () я використовував прозорий колір Це те, що потрібно для обєкта PGraphics

Додатково

Коли вам знадобиться намалювати багато тексту, наприклад, тисячу слів, ви виявите, що це гальмує скетч Ви можете виправити ситуацію, написавши ці слова у функції setup () в обєктах PGraphics Потім ви можете вивести на екран обєкти PGraphics за допомогою функції image (), це прискорить роботу вашого скетчу

Джерело: Ян Вантомм, Processing 2: креативне програмування, переклад з англійської Олександри Мішутіної, Published by Packt Publishing Ltd, 2012, BIRMINGHAM – MUMBAI

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*