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

■35511 / 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 つを
    組み合わせて使うこともありますね。

違反を報告
削除キー/

前の記事(元になった記事) 次の記事(この記事の返信)
←重なったPictureBox同士を透過する方法 /本体は眼鏡 1693871617.jpg/9KB →Re[2]: 重なったPictureBox同士を透過する方法 /本体は眼鏡
 
上記関連ツリー

Nomalアイコン 重なったPictureBox同士を透過する方法 / 本体は眼鏡 (23/09/05(Tue) 08:53) #35510 1693871617.jpg/9KB
Nomalアイコン 重なったPictureBox同士を透過する方法 / 魔界の仮面弁士 (23/09/05(Tue) 09:52) #35511 ←Now
│└Nomalアイコン Re[2]: 重なったPictureBox同士を透過する方法 / 本体は眼鏡 (23/09/06(Wed) 08:38) #35514 解決み!
Nomalアイコン Re[1]: 重なったPictureBox同士を透過する方法 / KOZ (23/09/05(Tue) 12:01) #35512
  └Nomalアイコン Re[2]: 重なったPictureBox同士を透過する方法 / KOZ (23/09/05(Tue) 12:10) #35513
    └Nomalアイコン Re[3]: 重なったPictureBox同士を透過する方法 / 本体は眼鏡 (23/09/06(Wed) 08:40) #35515 解決み!
      └Nomalアイコン Re[4]: 重なったPictureBox同士を透過する方法 / KOZ (23/09/06(Wed) 18:19) #35516 解決み!
        └Nomalアイコン Re[5]: 重なったPictureBox同士を透過する方法 / KOZ (23/09/09(Sat) 11:50) #35517 解決み! layeredWindow.jpg/15KB

All 上記ツリーを一括表示 / 上記ツリーをトピック表示
 
上記の記事へ返信

Mode/  Pass/


- Child Tree -