DOBON.NETプログラミング道掲示板
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
No35511 の記事
■35511
/ )
Re[1]: 重なったPictureBox同士を透過する方法
□投稿者/ 魔界の仮面弁士
大御所(1565回)-(2023/09/05(Tue) 09:52:08)
■
No35510
に返信(本体は眼鏡さんの記事)
> 重なっているPictureBoxにフォームの背景色ではなくて、
そういう重ね合わせは、WinForms ではなく XAML ベースの方が楽なのですけれどね。
WinForms のコントロールは、レイヤー間では背景部を転送描画するだけで、
前景部を透過させる仕組みはありません。PictureBox 上に PictureBox を
Controls.Add させた場合も同様です。
そのため、透過(あるいは半透明の)画像を複数重ね合わせて描画したい場合は、
PictureBox を複数枚使うのではなく、単一の PictureBox 上に
自前で複数の画像を Graphics.DrawImage することで実現します。
具体的な手順は、ここ DOBON.NET のサイトの
[.NET プログラミング Tips] > [画像、印刷(GDI+)]
当たりをご覧ください。
https://dobon.net/vb/dotnet/graphics/index.html
Graphics クラスのインスタンスの作り方ですが、特に理由がなければ
CreateGraphics メソッドは使わないようにします。
変化が大きい場合は、PictureBox の Paint イベントにて
e.Graphics に対して DrawImage するのが良いでしょう。
変化が少ない場合は、PictureBox と同じサイズの Bitmap を New して、
Graphics.FromImage(…) に対して DrawIamge し、その Bitmap を
PictureBox の BackgroundImage プロパティに割り当てるようにします。
要件によっては、BackgroundImage と Image と Paint イベントの 3 つを
組み合わせて使うこともありますね。
違反を報告
Javascriptを有効にしてください
この投稿が掲示板のルールに違反しており、何らかの対処が必要であると思われる場合は、以下のフォームを利用して管理人に報告することができます。
マルチポストの報告は、
返信フォーム
の上にある「マルチポストの報告」リンクをご利用ください。
この機能の悪用は絶対にしないでください。
悪用されたと管理人が判断した場合は、予告なしで厳しい対処がなされる可能性があります。
確認等の目的で、入力されたメールアドレス宛に返信メールが送信される可能性があります。メールの受信ができないメールアドレスは入力しないでください。
下のフォームが使用できない場合は、
メールフォーム
を使って管理人にご報告ください。
お名前(必須)
メールアドレス(必須)
本文(必須)
(違反理由など)
返信
削除キー/
編集
削除
Mode/
通常管理
表示許可
Pass/
HOME
HELP
新規作成
新着記事
ツリー表示
スレッド表示
トピック表示
発言ランク
ファイル一覧
検索
過去ログ
-
Child Tree
-