我想使用半透明色的 Graphics.FillRectangle 或 Graphics.Clear (例如ARGB = 128,0,0,0)使整个区域变暗 Graphics 对象除了某些指定(矩形)区域外:
我知道这可以通过四个 FillRectangle 调用来实现,但我想知道它是否不能更容易完成。
我知道简单剪辑( Graphics.SetClip ),但是这允许我剪切指定区域之外的所有内容,我希望实现相反的目标。
答案 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