プロが教えるわが家の防犯対策術!

.NETでWinFormアプリをC#で製作中です。
Visual Studio Community 2017を使用しています。

添付の図のように、Form上にボタンやDataGridView等が配置されていて、それらの手前に透過GIF(またはPNG)を描画したいのですが、方法が分からず詰まっています。

検索して調べてみたところでは、PictureBoxが子になる親のコントロールに対してしか背景色のTransparentが有効にならないという仕様があるということが分かっただけで、このように複数のコントロールにまたがるような配置で透過させる方法を見つけることができませんでした。。

お分かりになる方いらっしゃいましたらアドバイスをお願いします。m(_ _)m

「C# Form上に配置されたコントロール」の質問画像

質問者からの補足コメント

  • うーん・・・

    その後の経過についてです。

    下記の記事を参考に、背景を透明にしたフォームにPictureBoxを配置することで、メインフォーム上に透過付きアニメーションGIFを再生することができましたが‥

    「半透明のフォームの作り方(2つのフォームを重ねる)・続き」
     http://amonution.sblo.jp/article/44289906.html

    しかし、フォームに透過色を指定して透明にする記述の影響で、透過GIFの絵のフチに透過色がゴミのように出てしまうという問題が起こり、これでは実用に耐えないという感じになっています。。

    もう少し調べてみたいと思います。

    「C# Form上に配置されたコントロール」の補足画像1
      補足日時:2018/10/22 00:43
  • HAPPY

    「半透明のフォームの作り方(2つのフォームを重ねる)・続き」
     http://amonution.sblo.jp/article/44289906.html

    こちらを参考にした方法ですが、GIF画像を用意する際に透過した状態で画像を用意するのではなく、フォームの背景を透過する際に指定する「透過色」でGIFの抜き部分を塗っておいて、背景と一緒に透過されるように指定してやることで解決できました!

    「C# Form上に配置されたコントロール」の補足画像2
      補足日時:2018/10/22 01:48

A 回答 (1件)

試したことはありませんが…


https://dobon.net/vb/dotnet/form/formregion.html
コントロールの形状を透過GIFの形にくり抜く…でしょうかね?
単純な形でない場合はすごく面倒そうですけど。

Panelコントロールを被せて、そっちも透過にする。
というのもあるかもしれませんが、下のコントロール操作出来たかな?
    • good
    • 0
この回答へのお礼

Wr5さん いつもご回答ありがとうございます!

なるほど、コントロールの描画そのものをくり抜くことができるのですね‥!
表示したいのはGIFアニメで紙吹雪が舞い散ったりするようなものだったりと複雑なものを想定しているのでこちらの方法だと厳しそうですが、覚えておきたいと思います!

Panelコントロールを被せる場合にも同様の問題があるようでして、Panelの背景色のTransparentを有効にするにはやはり何かの子コントロールにする必要があるみたいで、そうすると親コントロールの内部にしか配置(描画)されないようですね。。
試しにDataGridView>Button2>Button1>PictureBoxで親子を設定すると、DataGridView内部にボタン2つが移動してしまいます。。ぐむむといった感じです。。

お礼日時:2018/10/16 10:27

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています