DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ラベルの3D表示について

環境/言語:[WindowsXP、2000等 VB.NET]
分類:[.NET]

はじめて、質問します。宜しくお願いします。

環境:WindowsXP
  :.NET2003

【質問】
 Labelコントロールを浮き出し表示をしたいのですが、うまく出来ません。
 下記のような方法で試して見ましたが、特に何も変わらずに表示されて
 しまいます。アドバイスを宜しくお願いします。

 Dim g As Graphics = Label1.CreateGraphics()

 ControlPaint.DrawBorder3D(g, New Rectangle(70, 60, 80, 40),
              Border3DStyle.Etched,Border3DSide.All)

 g.Dispose()
>  Dim g As Graphics = Label1.CreateGraphics()
>
>  ControlPaint.DrawBorder3D(g, New Rectangle(70, 60, 80, 40),
>               Border3DStyle.Etched,Border3DSide.All)

この70,60,80,40はどこから決めた値でしょうか?
ここで指定すべき座標は、Label1から取得したGraphicsオブジェクトの
左上を原点とした座標ですから、このコードだとラベルの左上の角から、
右に70ピクセル、下に60ピクセルの位置から、幅80ピクセル、高さ40ピクセルの
枠を描画していることになります。

Label1.ClientRectangleを指定すればよいと思います。
#でも、これやると文字も自分で描かないといけないですね。

後、CreateGraphicsメソッドを使うのではなく、
Paintイベントでイベントの引数のe.Graphicsを使うようにすれば、
他のウィンドウに隠れても消えないのでいいと思いますよ。
よねKENさんありがとうございます!!
出来ました。
LabelのPaintイベントで下記のようにやってみました!!

Dim g As Graphics = e.Graphics
ControlPaint.DrawBorder3D(g, Label1.ClientRectangle,
              Border3DStyle.Raised, Border3DSide.All)

>#でも、これやると文字も自分で描かないといけないですね。

文字も自分で描かなくてはいけないということなので、
これはまた、自分なりに調べてどうしてもわからなかったら、また教えてください!!

ありがとうございました<m(__)m>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板