HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2010
0730
nyanko画像の配置について14解決


nyanko

リンク

2010/7/30(Fri) 19:22:56|NO.34094

HSPをはじめた初心者です。よろしくお願いします

g.jpg(160×100)の
画像で4分割しています。
celload "g.jpg",1
id = stat
celdiv stat,80,50
pos 100,100
button "1",*hata1
button "2",*hata2
button "3",*hata3
button "4",*hata4
stop

*hata1
celput 1,0
stop
*hata2
celput 1,1
stop
*hata3
celput 1,2
stop
*hata4
celput 1.3
stop
button 1とbutton 2について問題ないのですが
button 3をクリックしたときに画像がbutton 1をクリックしたときの
画像の真下にくるように配置するにはどうしたら良いのですか
(同じくbutton 4をクリックしたときに画像がbutton 2をクリックしたときの
真下にくるように配置したいのですが)



この記事に返信する


ext

リンク

2010/7/30(Fri) 19:28:23|NO.34095

HDL(F1で出るあれ)でpos命令を参照してください。



nyanko

リンク

2010/7/31(Sat) 06:38:53|NO.34110

下記のようにすると目的は達成できましたが、
celload "g.jpg"
id = stat
celdiv stat,80,50
pos 0,0
button "1",*hata1
button "2",*hata2
button "3",*hata3
button "4",*hata4
stop

*hata1
pos 100,100
celput 1,0
stop
*hata2
pos 180,100
celput 1,1
stop
*hata3
pos 100,150
celput 1,2
stop
*hata4
pos 180,150
celput 1,3
stop
●配置位置に関して
<マニュアルから抜粋>
画像素材の分割サイズを設定

celdiv p1,p2,p3,p4,p5

p1=0〜(1) : ウインドゥID
p2=1〜(0) : 横方向の分割サイズ
p3=1〜(0) : 縦方向の分割サイズ
p4=0〜(0) : 横方向の中心座標
p5=0〜(0) : 縦方向の中心座標解説
指定したウィンドウIDが持つ画像素材の分割サイズを設定します。
分割された画像素材は、celput命令により画像を描画する際に参照されます。
たとえば、256×256ドットの画像を128×64ドットで分割する設定にした場合、
celput命令により128×64ドットの画像8枚分として扱うことができるようになります。

p1で、画像素材を持つウインドゥIDを指定します。
(p2,p3)で、横(X)・縦(Y)方向の分割サイズ(分割された領域1つあたりのドット数)を指定します。
分割サイズを省略、または0以下の値にした場合は、素材のサイズがそのまま使用されます。

(p4,p5)で、描画の中心座標を設定することができます。
これは、celput命令で描画を行なった際に、描画の基点位置になります。
たとえば、(0,0)を中心座標として指定した場合は、celput命令で描画される位置(pos命令で指定した座標)に、画像素材の(0,0)が参照されることになります。

●参照されるという意味がいまひとつ咀嚼できません


また、回転した画像の描画を行なう際にも、回転の中心となります。
通常は、(0,0)の位置、つまり左上が基点位置となっています。これは、gcopy命令での基点位置と同様です。



nyanko

リンク

2010/7/31(Sat) 09:51:56|NO.34114

長ったらしくなりすみません。
(p4,p5)で、描画の中心座標を設定することができます。
これは、celput命令で描画を行なった際に、描画の基点位置になります。
たとえば、(0,0)を中心座標として指定した場合は、celput命令で描画される位置(pos命令で指定した座標)に、画像素材の(0,0)が参照されることになります。

●参照されるという意味がいまひとつ理解できません



nyanko

リンク

2010/7/31(Sat) 10:56:44|NO.34131

>(p4,p5)で、描画の中心座標を設定することができます
中心座標というのは、描画した画像のx、y座標(右下角)ではないのですか



ext

リンク

2010/7/31(Sat) 18:01:43|NO.34150

他の言語がどうなのかはわかりませんが、すくなくともHSPでは、
描写の起点位置は画像の右下角ではなく左上角になります。

>(p4,p5)で、描画の中心座標を設定することができます。
というのはこの値を任意な値にすることで、
描写する際に中心となる座標を設定できるということです。



nyanko

リンク

2010/7/31(Sat) 19:40:18|NO.34151

愚鈍な私にレスをいただき感謝します。


>(p4,p5)で、描画の中心座標を設定することができます。
>というのはこの値を任意な値にすることで、
>描写する際に中心となる座標を設定できるということです。

具体的にソースをのせて再度質問させてください
g.jpgの2.jpg、二つの画像を表示させていますが



celload "g.jpg",1

celdiv 1,80,50,40,25
●80×50の画像をx=40、Y=25に配置するということではないのですか?
celput 1

celload "2.jpg",2
celdiv 2,400,300,20,15

celput 2


stop



ext

リンク

2010/7/31(Sat) 20:16:33|NO.34153

>●80×50の画像をx=40、Y=25に配置するということではないのですか?
違います。
あくまで画像を描写するときの中心となる座標を決めるだけです。
つまり、posで指定した座標と重なる点に、
画像のceldivで指定したp4とp5の座標の点が描写されることになります。

例えばシューティングゲームで自機を回転させて表示させたいときなどに、
中心となる座標が左上角にあるとすると、使用する素材となる画像によっては、
回転させたときに自機の位置が適当でなくなる場合があります。
そのような時に中心となる座標を決めておくことで、
自機の座標が常に安定した状態で描写することができるようになります。



nyanko

リンク

2010/7/31(Sat) 21:10:59|NO.34154

わかりました。
確認ですが
celload "g.jpg"
id = stat
celdiv stat,80,50,40,25
でよろしいのでしょうか?



ext

リンク

2010/7/31(Sat) 21:48:23|NO.34155

質問の内容がよくわかりませんが、
中心座標を設定することについて質問されているのなら、
その答えは用途によって異なります。

単純な画像観覧ソフトのように、
画像にゲームのような当たり判定をもたせたり、画像の回転を行わないのであれば、
中心座標を設定するのは、かえって管理しづらくなる原因にもなります。

先程も申し上げました通り、
シューティングゲームのように画像の回転等を行って、
その画像をある種のキャラクタのように使用するのであれば、
中心座標の設定は有効でしょう。



nyanko

リンク

2010/8/1(Sun) 07:45:21|NO.34169

>シューティングゲームのように画像の回転等を行って、
>その画像をある種のキャラクタのように使用するのであれば、
>中心座標の設定は有効でしょう

有り難うございます。こうした説明はオンラインマニュアルに掲載されていなので助かります。
最後に中心座標の設定の仕方ですが
celload "g.jpg"(80×50の画像)
id = stat
pos 100,100の場合

celdiv stat,80,50,140,125でよいのですか?



ext

リンク

2010/8/1(Sun) 13:29:44|NO.34172

中心座標に設定する座標はその画像によって異なります。

>pos 100,100の場合
という表現がいまいち分かりかねますが、
画像のx座標、y座標ともに100の位置を中心座標として置きたいという意味なのであれば、
celdivで指定する中心座標のパラメータであるp4とp5の値はどちらも100でいいはずです。

しかし、80×50のサイズの画像において、
それを上回る値を中心座標に設定することは通常ありえません。



nyanko

リンク

2010/8/1(Sun) 13:58:04|NO.34174

>しかし、80×50のサイズの画像において、
>それを上回る値を中心座標に設定することは通常ありえません。


80×50のサイズの画像の中心座標は、40,25ですよね
では、この画像が(100、100)の位置にあったら
中心座標は、142、125になるのではと考えたのですが
そうではないということですね。
う〜ん、いまひとつ理解できません



ext

リンク

2010/8/1(Sun) 14:12:44|NO.34177

celloadでロードされた時点で画像の位置は0,0の場所に置かれるので、
通常はありえませんが、仮にそのような通常ではない用途をするのならばその解釈は正しいです。



nyanko

リンク

2010/8/1(Sun) 14:49:54|NO.34179

>celloadでロードされた時点で画像の位置は0,0の場所に置かれるので、
>通常はありえませんが、仮にそのような通常ではない用途をするのならばその解釈は正しいです。

アドバイス感謝します。
今後は、マニュアルとにらめっこしながら進めていきたいと思います
お世話になりました。



ONION software Copyright 1997-2023(c) All rights reserved.