.net - 在.net中创建透明 Angular PNG

标签 .net css gdi+

作为 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/

相关文章:

asp.net - 回发时超出最大请求长度异常

.net - 有谁知道这个 EntryPointNotFoundException - "Unable to find an entry point named ' nonexistent_dummy' in DLL 'MSVCR80.dll' 的含义?

javascript - 无法加载资源 : the server responded with a status of 404

动画后 CSS 动画属性保留

css - 在 bootstrap css 中编辑组件样式的方法

c# - 将 curl 效果应用于静态图像 C#

c# - 使用 GDI+ 绘制遵循路径的字符串

c# - 如何提取自定义 header 值?

c# - 绘制具有相同透明度的重叠线

c# - 如何在远程计算机上执行命令?