タイトル | : 複数のコントロールの透過処理について |
記事No | : 5734 |
投稿日 | : 2007/06/27(Wed) 19:22 |
投稿者 | : Purple |
こんばんわ、以前透過について教えていただいた者です。 (仕様ソフト:VB 2005 express)
さっそくですが再度、透過についての質問をさせてください。
MakeTransparent等の方法で透過させた部分には、通常Formの背景が表示されますが、下層に他のコ ントロールがあった場合、重なった部分が消えてしまう(欠けてしまう)現象が起きてしまいま す。これは正常な現象なのでしょうが、2種類以上のコントロールを透過させて重ね合わすのには不 都合になってしまいます。
試しに、
PictureBox1.Controls.Add(PictureBox2)
を使うと、Box1は隠れなくなりますがBox2はBox1の透過部分に隠れてしまいました。
また、
Dim img1 As Image = My.Resources.画像A Dim img2 As Image = My.Resources.画像B Dim g As Graphics = AutoGraphics(PictureBox1) Dim ia As New ImageAttributes() ia.SetColorKey(Color.White, Color.White)
g.DrawImage(img1, New Point(0, 0)) g.DrawImage(img2, New Rectangle(New Point(0, 0), img2.Size), _ 0, 0, img2.Width, img2.Height, GraphicsUnit.Pixel, ia)
以上の方法だとPictureBox1上に画像Aと画像Bを重ねられましたが、それぞれの画像を動かしたり消 したりできなくなってしまいました。
例えば、PictureBox1とPictureBox2に「●(黒部分以外は透過)」のイメージを読み込み、それぞ れ左右から近づけていっても、接触したときにどちらかの●が透過部分に隠れないようにしたいと 思っています。「スプライト処理」、または「レイヤー構造」と呼ばれているようですが、適した 方法を見つけることができません。
もしなにか分かる方がいましたら、アドバイスをよろしくお願いします。
|