フォームのTransparentkeyは、黒になってます。
ピクチャーボックスがあり、そのバックカラーは、Transparentです。
FillEllipseでピクチャーボックスに黒以外で絵を描きます。
Dim PenBack As Pen = Pens.Transparent
として、絵の中に、線をかきますが、
ここで書いた線は、透明になりません。
もとある絵に、線を書き込んで描いた線は透明にしたいです。
どうすれば、良いのでしょうか?
> ピクチャーボックスがあり、そのバックカラーは、Transparentです。
BackColor = Transparent は、コントロール自体を透過させるためのものではありません。
親コントロール(この場合は Form)の背景色や画像が、そのコントロールの
背景として自動描画されるというだけです。
http://www.vb-user.net/junk/replySamples/2010.12.07.17.15/Transparent.png
> Dim PenBack As Pen = Pens.Transparent
> として、絵の中に、線をかきますが、
白い背景に半透明な赤ペンで描画した場合、その部分は桃色になります。
青い背景に半透明な赤ペンで描画した場合、その部分は紫色になります。
Pens.Transparent で描画した場合、完全透過なので描画結果は変わりません。
これは、Graphics の CompositingMode プロパティの値が、
初期値 SourceOver に設定されているためです。
背景とブレンドさせず、元のペンの色そのままで上書きさせたい場合は、
これを SourceCopy に変更してから描画してみてください。
http://dobon.net/vb/dotnet/graphics/alphabland.html
> フォームのTransparentkeyは、黒になってます。
フォームの TransparencyKey の事でしょうか。
描画した箇所を レイヤード ウィンドウ としてくり抜く場合、
描画結果の色が 1bit でも違うと透過されないので注意してください。
フォームに TextBox を貼り付けておき、TransparencyKey を黒にして、
文字入力してみると、文字の黒い部分がくり抜かれるかと思います。
今回の場合、透明色を使って描画するのではなく、TransparencyKey に指定した
不透過色(Colors.Black / Pens.Black 等)を使って描画してやれば良いかと。
Paintイベントでは、透明化できないものなのでしょうか?
フォームの透明色をIndianRedで ピクチャボックスが配置されています。
Private Sub PicArrow_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PicArrow.Paint
e.Graphics.FillRectangle(Brushes.IndianRed, 0, 0, 50, 50)
End Sub
透明にならない。
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
PicArrow.CreateGraphics.FillRectangle(Brushes.IndianRed, 0, 0, 50, 50)
End Sub
透明になる。
Paintイベントでは、透明にならないのでしょうか?
魔界の仮面弁士さんがご回答くださっている内容は理解しましたか?
そこにそのヒントがあると思いますが…。
あと、花ちゃんさんの警告もスルーですか?
>VBレスキュー(花ちゃん) 2010/11/27(土) 13:28:32 書込者ID:[ # !$! ]
>それより、色々ハンドルネームを変えて投稿されておられるようですが
>(さとう たろう たかし たなか きんぐ じろ 等)
>それに、回答をもらっておきながら返事もせずに次から次へと質問だけを
>繰り返すようなマナーの悪い事をしているとレスも貰えなくなりますよ。
ツイート | ![]() |