■ ボタンのサイズをイメージにあわせる

[Visual Basic Q & A 掲示板] [過去ログの一覧]


める 2008/02/18(月) 13:15:34 <初心者>
お世話になります。
Commandボタンに対してイメージを貼り付けて
イメージボタンを作成しようとしています。

cmdInfoSel.Picture = LoadPicture(FileName)

で読み込みは出来るのですが、ボタンのサイズを
イメージサイズにしようとしても正しいサイズに
なってくれません。

cmdInfoSel.Height = cmdInfoSel.Picture.Height
cmdInfoSel.Width = cmdInfoSel.Picture.Width

ボタンのサイズもイメージのサイズもtwips単位(?)で
指定するのですよね?

イメージをボタンのサイズに合わせる場合はオーナー
ドローが必要であるのは分かりましたが、ボタンの
サイズをあわせる場合も特別に何か必要な処理が
あるのでしょうか?

環境はVB6です。よろしくお願いします。

VBレスキュー(花ちゃん) 2008/02/19(火) 07:22:09 <初心者>
>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

める 2008/02/19(火) 09:58:37 <初心者>
[[解決]]

お返事遅くなりました。
回答ありがとうございます。

>どこで、twips単位 に変換しているのでしょうか?
サイズを表す単位が全てtwipsであると思い込んでました。

ボタンのサイズを示すcmdInfoSel.Heightの値はtwipsなんですよね?
cmdInfoSel.Picture.Heightってtwipsではないのでしょうか?

やりたい動作は実現しましたので、解決と致します。
ありがとうございました。

魔界の仮面弁士 2008/02/19(火) 10:26:35 <常連>
> ボタンのサイズを示す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 プロパティ]

毎週金曜日はポイント最大3倍!さらに4倍のチャンスも!

Programming Library