除指定区域(.NET,GDI +)外的图形FillRectangle

时间:2012-06-18 17:41:35

标签: c# .net vb.net gdi+ clipping

我想使用半透明色的 Graphics.FillRectangle Graphics.Clear (例如ARGB = 128,0,0,0)使整个区域变暗 Graphics 对象除了某些指定(矩形)区域外:

enter image description here

我知道这可以通过四个 FillRectangle 调用来实现,但我想知道它是否不能更容易完成。

我知道简单剪辑( Graphics.SetClip ),但是这允许我剪切指定区域之外的所有内容,我希望实现相反的目标。

1 个答案:

答案 0 :(得分:4)

Dim img = Bitmap.FromFile("C:\Users\Public\Pictures\Sample Pictures\Desert.jpg")

Using gfx = Graphics.FromImage(img)
    Dim r = New Rectangle(100, 150, 50, 50)
    gfx.SetClip(r, Drawing2D.CombineMode.Exclude)
    Using b = New SolidBrush(Color.FromArgb(128, 0, 0, 0))
        gfx.FillRectangle(b, New Rectangle(0, 0, img.Width, img.Height))
    End Using
    Me.PictureBox1.Image = img
End Using