コンテキスト:処理v3; Windows 10画面より大きな画像内を移動する
私は853x2048ピクセルの画像を画面に表示したいと思っています。その大部分は底から消えてしまいます。 Processingを使用して、画像内を移動したり、モーションパスのように移動したり、特定のポイントで一時停止したり、ズームイン/ズームアウトしたりしたい
以下のコードは、Robotクラスのデモから採用されています。私は、画像内を移動するために移動すると思っていました。
このコードは機能しますが、まだビューポートを移動する方法を理解できません。そして、ズームの問題があります(私はまだ対処していません)。
画像を動かしたり、ビューポートに対して画像を移動するには、マウスをどのように動かしますか?
//
// how to use java.awt.Robot class in processing ...
//
import java.awt.*;
import java.awt.event.*;
Robot robot;
PFont pfont;
Point save_p;
PImage img;
void setup() {
try {
robot = new Robot();
robot.setAutoDelay(0);
}
catch (Exception e) {
e.printStackTrace();
}
surface.setResizable(true);
fullScreen();
img = loadImage("bigpic.jpg");
pfont = createFont("Impact", 32);
}
void draw() {
background(#ffffff);
fill(#000000);
imageMode(CORNERS);
image(img, 0, 0, 640*3, 480*8);
Point p = getGlobalMouseLocation();
textFont(pfont);
text("now x=" + (int)p.getX() + ", y=" + (int)p.getY(), 10, 32);
if (save_p != null) {
text("save x=" + (int)save_p.getX() + ", y=" + (int)save_p.getY(), 10, 64);
}
}
void keyPressed() {
switch(key) {
case 's':
save_p = getGlobalMouseLocation();
break;
case 'm':
if (save_p != null) {
mouseMove((int)save_p.getX(), (int)save_p.getY());
}
break;
case 'c':
break;
case 't':
translate(2000, 0);
break;
case ' ':
if (save_p != null) {
mouseMoveAndClick((int)save_p.getX(), (int)save_p.getY());
}
break;
}
}
Point getGlobalMouseLocation() {
// java.awt.MouseInfo
PointerInfo pointerInfo = MouseInfo.getPointerInfo();
Point p = pointerInfo.getLocation();
return p;
}
void mouseMove(int x, int y) {
robot.mouseMove(x, y);
}
void mouseMoveAndClick(int x, int y) {
robot.mouseMove(x, y);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.waitForIdle();
}
@KevinWorkman、私たちは最後に全く別の道をたどって終わりました。私たちは、Webページを呼び出し、キーを使用して、プレゼンテーション手法として、定義済みの場所に移動したり、ズームイン/ズームアウトしたりできます。最初にPhantomJSを使用してフルサイズのスクリーンショットを撮った後、Processing Navigateを使用することを考えました。私たちはブラウザでjavascriptで終わった。 – bugmagnet