Q18:p58「描画するコンポーネントを登録する」について、他
Q18-1:
p58についてお伺いいたします。
@「描画するコンポーネントを登録する」とありますが、ここで登録されるのは、イメージビューワーに設定されているイメージそのものとそのイメージのイメージビューワーに対する大きさが登録されるのでしょうか?それとも既にこのコンポーネント「画像ファイル入力」にそのイメージが設定されているので、イメージビューワーに対する大きさの情報のみが登録されるのでしょうか?
Aメソッド/値の「100」は、イメージビューワーの大きさを100としたときの値でしょうか?
p59
@起動メソッドで「最適な画像スケールを計算する( )」とありますが、何に対して最適なスケールなのでしょうか?また引数がないことを示す( )となっています。引数なしでどのように計算をおこなうのでしょうか?
A18-1:
1.「描画するコンポーネントを登録する」について
(MZPlatform2.2までは)[画像ファイル入力]コンポーネントで、画像の表示倍率(=スケール)を計算しています。
P59@で行う「最適な画像スケールを計算する()」のために、画像を表示するコンポーネント(=ここでは[イメージビューワー])を、まずこの処理では設定しています。
「描画するコンポーネント」は「画像」ではなく、「画像を表示する用途のコンポーネント」を指しています。
2.> メソッド/値の「100」は、イメージビューワーの大きさを100としたときの値でしょうか?
ここでの値は実際の画像データのサイズに対するパーセンテージです。
「100%」ということで、大きさを変えないということになります。
Lesson12では画像を拡大/縮小(=スケールを変化)させたりしていますので、この処理には画像を新規読込み時にはスケールを100%に戻すという意味合いがあります。
3.「最適な画像スケールを計算する()」について
P58@で既に[イメージビューワー]を「描画するコンポーネント」として設定してあるので、実際の画像サイズと表示するイメージビューワーとのサイズを比較して倍率を計算します。
「描画するコンポーネントを登録する」の処理が先に行われていなかった場合でも、エラーとはならず、倍率として「100」が設定されます。
Q18-2:
実践編p59につきましてご説明頂きましたが、「最適な画像スケール」とは何に対して最適なのか良くわからなかったため再度伺います。
> 3.「最適な画像スケールを計算する()」について
> P58@で既に[イメージビューワー]を「描画するコンポーネント」として設定してあるので、実際の画像サイズと表示するイメージビューワーとのサイズを比較して倍率を計算します。
> 「描画するコンポーネントを登録する」の処理が先に行われていなかった場合でも、エラーとはならず、倍率として「100」が設定されます。
何に対して最適なスケールなのでしょうか?またメソッドが引数がないことを示す( )となっています。引数なしでどのように計算をおこなうのでしょうか?
この最適なスケールの計算結果が同ページのAのイメージビューワーのメソッド/値:「現在の画像スケール〜」の画像スケールになるのでしょうか?
p68
固定値 メソッド/値:10や‐10となっていますが、MZではこのような固定値で示される値はすべて単位は%と考えて良いのでしょうか?
p68-69
p68で演算をおこなっています。なぜp69でも演算をおこなっているのでしょうか?
p69の固定値0は何を指しているのでしょうか?
p69-70
比較演算コンポーネントと画像ファイル入力コンポーネントがつながっている理由は単にイベントを発生させる「きっかけ」をつくるためでしょうか?データの流れは、
加算コンポーネント→画像ファイル入力コンポーネント→イメージビューワーと考えて良いのでしょうか?各コンポーネントの接続関係からはそのように判断できません
が。画像ファイル入力コンポーネントにはどのようなデータが渡されるのでしょうか?
A18-2:
> 何に対して最適なスケールなのでしょうか?またメソッドが引数がないことを示す( )となっています。引数なしでどのように計算をおこなうのでしょうか?
「描画するコンポーネントを登録する」の時に設定した[イメージビューワー]に対しての最適なスケールを計算します。
先に比較対象となるコンポーネントは設定してありますので、引数無しで計算できます。
また、先日の回答でも書いた通り、「描画するコンポーネントを登録する」を先に実行しておらず、比較対象となるコンポーネントが設定されていない場合でも、「100」がスケールとして設定されます。
> この最適なスケールの計算結果が同ページのAのイメージビューワーのメソッド/値:「現在の画像スケール〜」の画像スケールになるのでしょうか?
その通りです。
> 固定値 メソッド/値:10や‐10となっていますが、MZではこのような固定値で示される値はすべて単位は%と考えて良いのでしょうか?
全ての値の単位が%とは限りません。
判りにくいものにはできるだけ、起動メソッド設定画面の「説明」欄などに記述するようしております。
> p68で演算をおこなっています。なぜp69でも演算をおこなっているのでしょうか? p69の固定値0は何を指しているのでしょうか?
P69で[比較演算]コンポーネントを使用している処理の目的は、スケールの足し引きではありません。
スケールをどんどん「-10」していくと、いずれマイナスの値になってしまいます。設定する値がマイナスにならないよう、[加算]の結果を[比較演算]を使って「0」と比較し、「0」より大きい場合にその値を画像スケールとして設定する、というのがP69の処理です。
> 比較演算コンポーネントと画像ファイル入力コンポーネントがつながっている理由は単にイベントを発生させる「きっかけ」をつくるためでしょうか?
[比較演算]と[画像ファイル入力]が繋がっているのは、上記理由です。
> データの流れは、加算コンポーネント→画像ファイル入力コンポーネント→イメージビューワーと考えて良いのでしょうか?各コンポーネントの接続関係か
らはそのように判断できませんが。画像ファイル入力コンポーネントにはどのようなデータが渡されるのでしょうか?
@[ボタン(ID:7-6)/(ID:7-7)]押す→アクションイベント発生→
[加算]「数値変換/左右オペランド設定後、演算を行う」実行される
A@の実行をきっかけとして
[加算]→処理完了イベント発生→
[比較演算]
「数値に変換して左右オペランドに設定した後で演算を行う」実行される
BAの実行ををきっかけとして
[比較演算]→処理完了イベント発生
[画像ファイル入力]「画像スケールを設定する」
[イメージビューワー]「setScale()」実行される
という流れになっています。
@の実行でスケールに「10」または「-10」加算されます。
Aその値が「0」より大きいか確認します。
B右側コンポーネントの処理には「イベント番号」が付いているので、[比較演算]の演算結果が「true」(=スケールが0より大きい)場合に、加算結果の値が [画像ファイル入力]「画像スケールを設定する」の値として設定されます。[イメージビューワー]「setScale()」で設定する値は [画像ファイル入力]に設定された値を取得しています。(加算結果の値でも構いません)