繁体   English   中英

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

[英]Drawing a Gradient Circle into a PictureBox with VB.NET

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

该应用程序包括两个步骤:

  1. 图像被加载到PictureBox
  2. 使用给定的半径/直径(以像素为单位)规格和圆中心的 position 以及PictureBox内图片的X, Y将圆直接绘制到PictureBox中。 (例如,如果给定的坐标是44,44 ,那么圆的中心将在44,44

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

另外,我正在考虑使用System.Drawing直接在图片picturebo x 中存在的图片中绘制一个圆圈,但它看起来不是最好的(圆圈是颗粒状和像素化的)并且没有工作渐变选项为了我。

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

我的想法是直接将这个圆圈画到PictureBox中,而不必将图片保存到 PC,因为PictureBox中的这个图像每秒都会更新一次,效率不高。

我怎样才能做到这一点? System.Drawing中是否有 function 可以执行此操作,或者我可以使用 NuGet Package? (在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变量的方式,使其成为正确大小和位置的圆圈,并根据需要更改 colors。

编辑:应得的信用,我从这个问题的一个答案中得到了基础。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM