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

解決


める  2008-02-18 13:15:34  No: 100308  IP: 192.*.*.*

お世話になります。
Commandボタンに対してイメージを貼り付けて
イメージボタンを作成しようとしています。

cmdInfoSel.Picture = LoadPicture(FileName)

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

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

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

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

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

編集 削除
VBレスキュー(花ちゃん)  2008-02-19 07:22:09  No: 100309  IP: 192.*.*.*

>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  No: 100310  IP: 192.*.*.*

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

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

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

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

編集 削除
魔界の仮面弁士  2008-02-19 10:26:35  No: 100311  IP: 192.*.*.*

> ボタンのサイズを示す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 プロパティ]

編集 削除