Я бы порекомендовал использовать буфер PGraphics
, который по сути является "еще одним эскизом", который также действует как Image
для целей рисования, и наиболее определенно не зацикливается на "тысяче кадров в секунду". Нарисуйте что-то, только когда у вас есть что-то новое для рисования, используя функцию redraw
в сочетании с событиями перемещения мыши:
PImage img1, img2;
PGraphics imagebuffer;
void setup() {
size(502, 316);
imagebuffer = createGraphics(width, height);
img1 = loadImage("first-image.jpg");
img2 = loadImage("second-image.jpg");
noLoop();
}
void mouseMoved() {
redraw();
}
void draw() {
image(img1, 0, 0);
if (mouseX>0) {
imagebuffer = createGraphics(mouseX, height);
imagebuffer.beginDraw();
imagebuffer.image(img2, 0, 0);
imagebuffer.endDraw();
image(imagebuffer, 0, 0);
}
}
В нашей настройке мы загружаем изображение и отключаем цикл потому что мы будем перерисовывать на основе redraw
, а затем в ответ на события перемещения мыши мы создадим новый буфер, который будет иметь ширину, равную текущей координате X мыши, нарисуем наше изображение, которое будет обрезано дляfree ", потому что буфер имеет только ограниченную ширину, и затем мы рисуем этот буфер , как если бы это было изображение поверх изображения, которое у нас уже есть.