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

panelに画像を真中に1枚だけ表示したい。

環境/言語:[Windows2000 C# VS.NET2002 Framework1.0]
分類:[.NET]

pictureBoxだとSizeModeプロパティによってセンターに表示させたりストレッチさせたり
設定ができるのですが、Panelに画像を貼り付けると、サイズが合ってないと
見切れたり、画像がpanelに対して小さすぎると複数枚表示されたりします。

分け合ってPanelを使っているのですが、どうにかPanelの真中に1枚だけ画像を
表示することはできないものでしょうか?


開発環境 .NET2002
.NET FrameWork 1.0
Form(の親クラスであるControlクラス)は背景を描画する際に、BackgroudImageプロパティのイメージを使用してTextureBrushで背景を「塗りつぶしている」ようなので、Paintイベントの中でGraphics.DrawImageメソッドなどで直接描画したほうがいいかもしれません。
■No2539に返信(Codingslaveさんの記事)
> Form(の親クラスであるControlクラス)は背景を描画する際に、BackgroudImageプロパティのイメージを使用してTextureBrushで背景を「塗りつぶしている」ようなので、Paintイベントの中でGraphics.DrawImageメソッドなどで直接描画したほうがいいかもしれません。


ご返答ありがとうございます。
PaintイベントはFormのロード時に実行されるんでしょうか。
ロード後にPaintイベントでpanelに描画する画像を変える場合には
どのようにすればいいのでしょうか?Paintイベントを呼びだす事は
可能でしょうか?
Paintイベントはウィンドウの再描画が必要なとき(たとえば他のウィンドウと重なっていて、重なっていた部分が表示されるときやウィンドウのサイズが変更されるとき)にそのつど呼び出されます。少なくともフォームが表示されるとき(ロード)には間違いなく呼び出されます。
表示する画像を変更してそれを描画したい場合など、開発者の任意のタイミングでPaintイベントを発生させる場合、Invalidate()メソッドなどを使ってPaintイベントを発生させることができます。
■No2542に返信(Codingslaveさんの記事)
> Paintイベントはウィンドウの再描画が必要なとき(たとえば他のウィンドウと重なっていて、重なっていた部分が表示されるときやウィンドウのサイズが変更されるとき)にそのつど呼び出されます。少なくともフォームが表示されるとき(ロード)には間違いなく呼び出されます。
> 表示する画像を変更してそれを描画したい場合など、開発者の任意のタイミングでPaintイベントを発生させる場合、Invalidate()メソッドなどを使ってPaintイベントを発生させることができます。

教えてくれました通り、OnPaintイベントとInvaildate()メソッドを使って
プログラムを組んでみたところ、期待通りの動作をしてくれました。どうもありがとう
ございました。
解決済み!

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