フォームの背景は半透明に文字は不透明に への返答

投稿で使用できる特殊コードの説明。(別タブで開きます。)
本名は入力しないようにしましょう。
投稿した後で削除するときに使うパスワードです。返答があった後は削除できません。
返答する人が目安にします。相手が小学生か社会人かで返答の仕方も変わります。
最初の投稿が質問の場合、質問者が解決時にチェックしてください。(以降も追加書き込み・返信は可能です。)
※「過去ログ」について書くときはその過去ログのURLも書いてください。

以下の返答は逆順(新しい順)に並んでいます。

投稿者 るしぇ  (社会人) 投稿日時 2008/10/24 04:50:35
TransparencyKey で特定の色を透明にはできるけど、
半透明は難しそう。

ものすごくトリッキーな方法として、半透明なフォームと
透明な文字だけフォームを表示して一緒に動かすとか。。。
投稿者 ラキシス  () 投稿日時 2008/10/24 03:09:56
可能なのかどうか分かりませんが、フォームの背景は半透明に文字は不透明にする事は可能でしょうか?
特定の色を半透明にするとか・・・

Public Class Form1

    Private Sub Form1_Load(ByVal sender As System.ObjectByVal e As System.EventArgs) Handles MyBase.Load
        Me.FormBorderStyle = Windows.Forms.FormBorderStyle.None
        Me.KeyPreview = True
        Me.Opacity = 0.5
        Me.BackColor = Color.Black
        Me.Size = New Size(300, 50)
    End Sub

    Private mousePoint As Point

    Private Sub Form1_MouseDown(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseDown
        If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
            mousePoint = New Point(e.X, e.Y)
        End If
    End Sub

    Private Sub Form1_MouseMove(ByVal sender As ObjectByVal e As System.Windows.Forms.MouseEventArgs) Handles MyBase.MouseMove
        If (e.Button And MouseButtons.Left) = MouseButtons.Left Then
            Me.Left += e.X - mousePoint.X
            Me.Top += e.Y - mousePoint.Y
        End If
    End Sub

    Private Sub Form1_KeyDown(ByVal sender As ObjectByVal e As System.Windows.Forms.KeyEventArgs) Handles Me.KeyDown
        Debug.WriteLine(e.KeyCode)
        Select Case e.KeyCode.ToString
            Case "P"
                Dim g As Graphics = Me.CreateGraphics()
                Dim fnt As New Font("MS UI Gothic", 20)

                g.DrawString("これはテストです。", fnt, Brushes.White, 10, 10)  '←この文字は不透明にしたい 

                fnt.Dispose()
                g.Dispose()

            Case "Escape"
                Me.Close()

            Case Else
        End Select

    End Sub

End Class