DOBON.NETプログラミング道掲示板

No35115 の記事


■35115 / )  Re[4]: フォーム背景のみを半透明にしたい
□投稿者/ よっし〜 一般人(13回)-(2022/07/27(Wed) 12:14:45)
  • アイコンNo35114に返信(魔界の仮面弁士さんの記事)

    魔界の仮面弁士様、早速のご教示、有り難うございます。
    > 半透明シートを被せて、下の親フォームを操作不能にしたいという意図でしょうか。
    > であれば、親フォームにフォームサイズの Panel を全体表示しておき、
    > その Panel の背景に、親フォームの内容を描画してはどうでしょう。
    そうです。まさにそうです。
    先の投稿の画面はサンプルで親フォームはスッキリしておりますが、実際の親フォームはゴチャゴチャしておりますので、
    予めパネルを貼らずに、動的に貼る様にしたいと思います。
    今後の為に、サンプルだけ貼らして頂きます。
    どうも、有り難うございました。

    Private Sub Button4_Click(sender As Object, e As EventArgs) Handles Button4.Click
    Dim cr = Me.ClientRectangle
    Dim r = Me.RectangleToScreen(cr)
    Dim bmp As New Bitmap(cr.Width, cr.Height)
    Using g = Graphics.FromImage(bmp)
    '画面キャプチャ
    g.CopyFromScreen(r.Location, New Point(0, 0), r.Size)
    '半透明のスモークをかける
    Using b As New SolidBrush(Color.FromArgb(180, Color.DarkGray))
    g.FillRectangle(b, cr)
    End Using
    End Using

    Dim Pnl As New Panel
    Pnl.Parent = Me

    'Panel1を重ねて表示
    Dim oldBmp = Pnl.BackgroundImage
    Pnl.BackgroundImage = bmp
    If oldBmp IsNot Nothing Then oldBmp.Dispose()
    Pnl.BringToFront()
    Pnl.SetBounds(cr.X, cr.Y, cr.Width, cr.Height)
    Pnl.Visible = True
    Form4.ShowDialog(Me)
    Pnl.Visible = False
    Pnl.Dispose()
    End Sub


解決み!
違反を報告
返信 削除キー/


Mode/  Pass/


- Child Tree -