14398


こんばんは、表題の件に付きご教示頂けますでしょうか？

テキストボックスでテキストを編集するエディタ的なWindows Formアプリケーション（WPF不可）を製作中です。

テキスト編集エリア（テキストボックス）に表示された文字に対して注釈や付加情報をグラフィックスで表示して重ねあわせて表示したく思い`PictureBox`コントロールをテキストボックスの前面に配置し`BackgroundColor`を`Transparent`に設定したところフォームと同じ色になり透明になりません。

この場合の`Transparent`はフォームと同じ色を意味する事である事はわかったのですが肝心の`PictureBox`を透明にする方法がわかりません。

テキストボックス上のテキストに対してグラフィックがドロー出来ればピクチャーボックスに特に拘る積りはないのですが今のところテキストボックスの上にピクチャーボックスを重ねる方法しか思いつきません。

どなたか解決方法などご存知の方がおられましたらご教示お願い出来ますでしょうか？

開発環境は.NET Framework 4 Windows7 64Bitです。

よろしくお願いします。


CC BY-SA 3.0
2015-08-13T13:53:36.717
14396
2015-08-13T21:34:34.777
2015-08-13T21:34:34.777
5750
10606
question
.net vb.net winforms
テキストボックス上に透明のピクチャーボックスを重ねて表示したい


PictureBoxを使わずにWndProcをオーバーライドしてWM_PAINTメッセージで自前で画像を描画を行うと重ね描きが可能です。

[code]

    Public Class TextBoxEx
        Inherits TextBox
    
        Private bmp As System.Drawing.Image = System.Drawing.Image.FromFile("test.png")
    
        Protected Overrides Sub WndProc(ByRef m As Message)
            MyBase.WndProc(m)
            Const WM_PAINT As Integer = &HF
            Select Case (m.Msg)
                Case WM_PAINT
                    Using g = Graphics.FromHwnd(Me.Handle)
                        g.DrawLine(Pens.Red, 40, 20, 70, 70)
                        g.DrawImage(bmp, New Point(50, 50))
                    End Using
            End Select
        End Sub
    End Class
    
[/code]


CC BY-SA 3.0
2015-08-13T15:47:07.360
14398
2015-08-13T15:47:07.360
4926
14396
answer