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

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

違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -