作为 UI .net 库的一部分,我需要创建 Angular PNG 图像以与 DIV 的 Angular 对齐,以便为其提供圆 Angular 。
我认为我可以通过执行以下操作来创建一个动态 Angular 落:
- 创建位图(假设为 25 x 25)
- 将背景填充为绿色(我们为其创建的 DIV 外部的颜色)
- 调用 FillEllipse() 并创建一个 50 x 50 的圆圈,其中 25% 重叠到 25 x 25 位图中
- 最后用相同的坐标调用DrawEllipse()来绘制边框
这效果很好,可以创建 Angular 图像。
问题是我希望将 FillEllipse() 调用的颜色设置为 Color.Transparent。这样 DIV 就可以通过样式指定背景颜色。
但是,由于 FillEllpise() 在彩色背景上创建透明圆圈,因此不会出现任何内容。
总而言之:如何打出透明的孔?
我认为ExcludeClip()会有所帮助,但这似乎只处理Recentangles。
最佳答案
这有效:
Dim bmp As New Bitmap(25, 25)
Using g As Graphics = Graphics.FromImage(bmp)
g.Clear(Color.Transparent) 'This is the key point'
g.FillEllipse(Brushes.Red, New Rectangle(0, 0, 50, 50))
g.DrawEllipse(Pens.Black, New Rectangle(0, 0, 50, 50))
End Using
bmp.Save("C:\a\out.png", Imaging.ImageFormat.Png)
编辑:该死,错过阅读问题,给我一点时间更改代码...
编辑2: 完成,你需要的部分是图形路径:
Dim bmp As New Bitmap(25, 25)
Using g As Graphics = Graphics.FromImage(bmp)
Dim gp As New GraphicsPath
gp.AddLine(0, 0, 25, 0)
gp.AddArc(New Rectangle(0, 0, 50, 50), -90, -90)
gp.AddLine(0, 25, 0, 0)
g.Clear(Color.Transparent)
g.FillPath(Brushes.Red, gp)
g.DrawPath(Pens.Black, gp)
End Using
bmp.Save("C:\a\out.png", Imaging.ImageFormat.Png)
关于.net - 在.net中创建透明 Angular PNG,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/980470/