使用 VB.NET 将渐变圆圈绘制到 PictureBox 中

Drawing a Gradient Circle into a PictureBox with VB.NET

我有一个应用程序可以将图像放入 PictureBox 并在其中画一个圆圈。

申请包括两个步骤:

  1. 图像已加载到 PictureBox
  2. 一个圆被直接绘制到 PictureBox 中,给定的 Radius/Diameter 规格(以像素为单位)和圆心的位置以及里面图片的 X, Y PictureBox。 (例如,如果给定坐标为 44,44,则圆心将位于 44,44

我的目标是使用最有效的方法将橙色渐变圆圈(见下图)绘制到 PictureBox 中已有的图像中,并覆盖它。最好,我想要一种不将图像保存到计算机的方法,因为框内的图像每秒上传一次。

此外, 我正在考虑使用 System.Drawing 直接在 picturebox 中的图片中画一个圆圈,但它看起来不是最好的(圆圈有颗粒感和像素化)并且没有适合我的工作渐变选项。

下图中显示了我要绘制的圆的示例。 我在下面附上了一张画在 PictureBox 上的圆应该是什么样子的图片:

我的想法是直接把这个圆圈画到PictureBox里面,不用把图片存到电脑上,因为PictureBox里面的这张图片每秒更新一次,效率不高.

我该怎么做? System.Drawing 中是否有可以执行此操作的函数或我可以使用的 NuGet 包? (在 PictureBox?

中已存在的图像上绘制橙色圆形渐变圆

这是一个示例,它绘制了一个橙色椭圆,在 PictureBox:

中从中心透明到边缘不透明
Private Sub PictureBox1_Paint(sender As Object, e As PaintEventArgs) Handles PictureBox1.Paint
    Dim bounds = PictureBox1.Bounds

    Using path As New GraphicsPath
        path.AddEllipse(bounds)

        Using brush As New PathGradientBrush(path)
            brush.CenterPoint = New PointF(bounds.Width / 2.0F, bounds.Height / 2.0F)
            brush.CenterColor = Color.FromArgb(0, Color.Orange)
            brush.SurroundColors = {Color.Orange}
            brush.FocusScales = PointF.Empty

            e.Graphics.FillRectangle(brush, bounds)
        End Using
    End Using
End Sub

您可以更改设置 bounds 变量的方式,使其成为大小和位置正确的圆,并根据需要更改颜色。

编辑:归功于它,我从 this question 的一个答案中得到了基础。