使用 VB.NET 将渐变圆圈绘制到 PictureBox 中
Drawing a Gradient Circle into a PictureBox with VB.NET
我有一个应用程序可以将图像放入 PictureBox
并在其中画一个圆圈。
申请包括两个步骤:
- 图像已加载到
PictureBox
- 一个圆被直接绘制到
PictureBox
中,给定的 Radius/Diameter 规格(以像素为单位)和圆心的位置以及里面图片的 X, Y
PictureBox
。 (例如,如果给定坐标为 44,44
,则圆心将位于 44,44
。
我的目标是使用最有效的方法将橙色渐变圆圈(见下图)绘制到 PictureBox
中已有的图像中,并覆盖它。最好,我想要一种不将图像保存到计算机的方法,因为框内的图像每秒上传一次。
此外,
我正在考虑使用 System.Drawing
直接在 picturebo
x 中的图片中画一个圆圈,但它看起来不是最好的(圆圈有颗粒感和像素化)并且没有适合我的工作渐变选项。
下图中显示了我要绘制的圆的示例。
我在下面附上了一张画在 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 的一个答案中得到了基础。
我有一个应用程序可以将图像放入 PictureBox
并在其中画一个圆圈。
申请包括两个步骤:
- 图像已加载到
PictureBox
- 一个圆被直接绘制到
PictureBox
中,给定的 Radius/Diameter 规格(以像素为单位)和圆心的位置以及里面图片的X, Y
PictureBox
。 (例如,如果给定坐标为44,44
,则圆心将位于44,44
。
我的目标是使用最有效的方法将橙色渐变圆圈(见下图)绘制到 PictureBox
中已有的图像中,并覆盖它。最好,我想要一种不将图像保存到计算机的方法,因为框内的图像每秒上传一次。
此外,
我正在考虑使用 System.Drawing
直接在 picturebo
x 中的图片中画一个圆圈,但它看起来不是最好的(圆圈有颗粒感和像素化)并且没有适合我的工作渐变选项。
下图中显示了我要绘制的圆的示例。
我在下面附上了一张画在 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 的一个答案中得到了基础。