質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

Q&A

解決済

1回答

772閲覧

複数のイメージを並べて1つのイメージにまとめる方法

P5_USER

総合スコア73

Processing

Processingは、オープンソースプロジェクトによるCGのためのプログラミング言語です。Javaをベースにしており、グラフィック機能に特化しています。イメージの生成やアニメーションなど、視覚的なフィードバックを簡単に得ることが可能です。

0グッド

0クリップ

投稿2018/03/10 08:32

編集2018/03/10 11:14

いつもお世話になっております。

前提・実現したいこと

赤枠の中を表示するために3つのイメージを1つのイメージとして扱いたいです。

draw()内では3つのイメージのy位置が変わっても、纏められたイメージが更新されるだけなので、動的にイメージを纏めたいです。

1つのイメージに纏められさえすれば、
copy(イメージ,[赤枠領域],[表示領域])で出来るはずなのですが......
###コード
spd_number,spd_label_1,spd_label_10,spd_label_100はどれもPGraphics型です。

processing

1void move_spd_num_label() 2{ 3 float divisor = spd_label_1.height / 2 - (spd_num_distance / 2) * 3; 4 5 float y_1 = map(kvc, 0, 20, -divisor, divisor); 6 float y_10 = map(floor(kvc / 10), 0, 20, -divisor, divisor); 7 float y_100 = map(floor(kvc / 100), 0, 20, -divisor, divisor); 8 9 if (kvc >= 10) 10 { 11 y_1 = y_1 % divisor; 12 } 13 if (floor(kvc / 10) >= 10) 14 { 15 y_10 = y_10 % divisor; 16 } 17 if (floor(kvc / 100) >= 10) 18 { 19 y_100 = y_100 % divisor; 20 } 21 22 translate(displayWidth/2, displayHeight/2); 23 stroke(0, 255, 0); 24 line(0, 0, displayWidth/2, 0); 25 //imageMode(CENTER); 26 //image(spd_label_1, spd_num_x, y_1 - font_size_large / 2); 27 //image(spd_label_10, -(spd_label_1.width + spd_label_10.width) / 2 + spd_num_x, y_10 - font_size_large /2); 28 //image(spd_label_100, -(spd_label_1.width + spd_label_100.width) / 2 - spd_label_10.width + spd_num_x, y_100 - font_size_large / 2); 29 30 imageMode(CORNER); 31 spd_number = createGraphics(spd_label_1.width + spd_label_10.width + spd_label_100.width, displayHeight / 10); 32 spd_number.beginDraw(); 33 spd_number.imageMode(CORNER); 34 spd_number.image(spd_label_1, 0, y_1 - font_size_large / 2); 35 spd_number.image(spd_label_10, -spd_label_1.width, y_10 - font_size_large /2); 36 spd_number.image(spd_label_100, -(spd_label_1.width + spd_label_10.width), y_100 - font_size_large / 2); 37 spd_number.endDraw(); 38 39 image(spd_number, 0, 0); 40 noFill(); 41 translate(-displayWidth/2, -displayHeight/2); 42}

イメージ説明

補足情報(FW/ツールのバージョンなど)

processig 3.3.6

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Processingでは画像はPImageですが、PImageの派生クラスとしてPGraphicsというのもありそれもPImageと同じものとして扱えます。

http://processing.github.io/processing-javadocs/core/processing/core/PGraphics.html

PGraphicsはPImageと異なり、あたかもそれがスケッチの画面であるかのように様々な描画関数を用いて描画できます。もちろんimageで別の画像(PImage)も描画できます。これを使えば複数の画像を一つの画像へ合成することも可能です。

Java

1PImage anImage = ... 2PGraphics newImage = createGraphics(, 高さ); 3newImage.beginDraw(); 4newImage.image(anImage, 描画位置x, 描画位置y); 5... 6newImage.endDraw();

投稿2018/03/10 09:30

KSwordOfHaste

総合スコア18394

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

P5_USER

2018/03/10 10:38

KSwordOfHasteさん ありがとうございます。 質問があります。動的なPGraphicsについて確保しなければならないキャンバスのことです。 質問の図のように3つの静的な図があり、これらのyの位置を動的に動かすのですが、キャンバスのサイズが小さいとイメージが圧縮されてしまい、同じ比率を維持しにくくなってしまいます。それぞれの図の幅と長さと移動量が決まっている場合は、3つの図がキャンバスからはみ出ない最小領域を構えてあげる必要があるのでしょうか。
KSwordOfHaste

2018/03/10 11:05

> キャンバスのサイズが小さいとイメージが圧縮されてしまい すみません、どういう状況か正確にわかりません。実際のコードを見た方がわかりやすいかも知れません。
P5_USER

2018/03/10 11:18

質問文にコードというタイトルで追加しました。 move_spd_num_label()はdraw()内で動作させています。 http://mukai-lab.info/class/programming_1/chapter7.html ↑の方のサイトを見て、3枚の画像を横に並べてそれぞれのyの位置を変更することには成功していますが、質問文のコードでは、何故か画面に出てきてくれていません......
KSwordOfHaste

2018/03/10 11:59 編集

うーん、各々のPGraphicsに画像がどんな具合に入っているなど、コードの断片だけを見てもわかりません。 再現するようなもっと小さなコードを提示してくれると見やすいです。今のままでは再現させること自体が大変ですので、コードの雰囲気だけみて「問題ないように見える」としか言えません。 ちなみに当初の質問と内容がかわってきてますが?
P5_USER

2018/03/11 01:07

ちょこちょこと弄っていたらうまく解決出来ました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問