.net - 使用 VB.NET 将渐变圆绘制到 PictureBox 中
问题描述
我有一个将图像放入 aPictureBox
并在其中绘制一个圆圈的应用程序。
该应用程序包括两个步骤:
- 图像被加载到
PictureBox
- 使用
PictureBox
给定的半径/直径(以像素为单位)规格和圆心的位置以及X, Y
图片在PictureBox
. (例如,如果给定的坐标是44,44
,那么圆的中心将在44,44
.
我的目标是使用最有效的方法将橙色渐变圆(见下图)绘制到已经在 a 中的图像中PictureBox
,并将其覆盖。最好,我想要一种不将图像保存到计算机的方法,因为盒子内的图像每秒都会上传一次。
另外,我正在考虑使用System.Drawing
直接在picturebo
x 中存在的图片中绘制一个圆圈,但它看起来不是最好的(圆圈是颗粒状和像素化的),并且没有适合我的渐变选项。
下图中显示了我要绘制的圆的示例。我在下面附上了一张画出的圆圈PictureBox
应该是什么样子的图片:
我的想法是直接将这个圆圈画到图中,PictureBox
而不必将图片保存到 PC 中,因为图中的这张图片PictureBox
每秒都会更新一次,而且效率不高。
我怎样才能做到这一点?是否有System.Drawing
可以执行此操作的功能或我可以使用的 NuGet 包?(在已经存在于PictureBox
?
解决方案
这是一个绘制橙色椭圆的示例,该椭圆在 a 内从中心透明到边缘不透明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
变量的方式,使其成为正确大小和位置的圆圈,并在需要时更改颜色。
编辑:应得的信用,我从这个问题的一个答案中得到了基础。
推荐阅读
- javascript - 如何使 vuetify 扩展面板独奏?
- mysql - 更新数据库时如何解决 NullPointerException
- google-cloud-composer - Cloud Composer - 如何启用私有 IP 环境?
- pandas - Beckhoff TwinCat Scope CSV 格式转换为 pandas 数据框
- linux - openembedded-core 和 poky 的区别
- php - 如何使用 ajax 在 codeigniter 中创建实时计数?
- java - 如何在android中的firebase实时聊天中实现交付状态
- ios - 在“开始开发 iOS 应用程序 (Swift)”教程中,从 Xcode 11.0 开始,Hello World 屏幕出现在画布顶部,将其隐藏
- dynamics-crm - 用于 Dynamics 365 学习的沙盒环境
- android - 在另一个线程中访问 ArrayList 数据