お世話になります。
Commandボタンに対してイメージを貼り付けて
イメージボタンを作成しようとしています。
cmdInfoSel.Picture = LoadPicture(FileName)
で読み込みは出来るのですが、ボタンのサイズを
イメージサイズにしようとしても正しいサイズに
なってくれません。
cmdInfoSel.Height = cmdInfoSel.Picture.Height
cmdInfoSel.Width = cmdInfoSel.Picture.Width
ボタンのサイズもイメージのサイズもtwips単位(?)で
指定するのですよね?
イメージをボタンのサイズに合わせる場合はオーナー
ドローが必要であるのは分かりましたが、ボタンの
サイズをあわせる場合も特別に何か必要な処理が
あるのでしょうか?
環境はVB6です。よろしくお願いします。
>cmdInfoSel.Height = cmdInfoSel.Picture.Height
>cmdInfoSel.Width = cmdInfoSel.Picture.Width
>ボタンのサイズもイメージのサイズもtwips単位(?)で
>指定するのですよね?
どこで、twips単位 に変換しているのでしょうか?
Picture.Width は、HiMetric (0.01 ミリメートル単位) 単位になりますので
twips単位 に変換するには下記のようになります。
With Command1
' .Style = vbButtonGraphical
.Picture = LoadPicture("c:\test.jpg")
.Width = Me.ScaleX(Command1.Picture.Width, 8, vbTwips)
.Height = Me.ScaleY(Command1.Picture.Height, 8, vbTwips)
End With
お返事遅くなりました。
回答ありがとうございます。
>どこで、twips単位 に変換しているのでしょうか?
サイズを表す単位が全てtwipsであると思い込んでました。
ボタンのサイズを示すcmdInfoSel.Heightの値はtwipsなんですよね?
cmdInfoSel.Picture.Heightってtwipsではないのでしょうか?
やりたい動作は実現しましたので、解決と致します。
ありがとうございました。
> ボタンのサイズを示すcmdInfoSel.Heightの値はtwipsなんですよね?
Twip 単位系の時もあれば、そうでない時もあります。
(単位系は、親コンテナの ScaleMode プロパティに依存します)
> cmdInfoSel.Picture.Heightってtwipsではないのでしょうか?
Picture オブジェクトの Width, Height は、常に HiMetric 単位系です。
VB6 ヘルプの下記の項目を参照してみてください。
[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
├[Visual Basic の仕様方法]
│└[プログラミング ガイド]
│ └[Visual Basic を使ってできること]
│ └[テキストおよびグラフィックスの操作]
│ └☆[座標系]
│ ├☆[オブジェクトの座標系の変更]
│ └☆[スケールの変換]
└[リファレンス]
└[ランゲージ リファレンス]
└[プロパティ]
└[H]
└★[Height、Width プロパティ]