图片框可以用来显示基于矢量的图像吗?
Posted
技术标签:
【中文标题】图片框可以用来显示基于矢量的图像吗?【英文标题】:Can the picturebox be used to display vector-based images? 【发布时间】:2012-09-17 02:48:21 【问题描述】:PictureBox 控件可以用来显示基于矢量的图像吗?
我读过一篇文章,声称 PictureBox 可用于显示基于矢量的图像而不是位图图像。因此可以调整框的大小,并且图片将像矢量图像一样保持其质量。
所以我决定试一试,虽然我看起来很优质。我的矢量图像不是完全矢量的问题吗?如果这不可能,是否有其他方法可以在不诉诸 WPF 的情况下做到这一点?
我正在使用 VB.NET。
【问题讨论】:
***.com/questions/397189/… 【参考方案1】:是的,这是可能的。它是元文件,而不是位图。最好使用 Paint() 事件显示,这样它可以在图片框更改大小时动态重新缩放。示例代码:
Public Class Form1
Public Sub New()
InitializeComponent()
PictureBox1.Dock = DockStyle.Fill
image = New System.Drawing.Imaging.Metafile(New System.IO.MemoryStream(My.Resources.schoolbus))
End Sub
Private Sub PictureBox1_Paint(ByVal sender As System.Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
e.Graphics.DrawImage(image, New Rectangle(Point.Empty, PictureBox1.ClientSize))
End Sub
Private Sub PictureBox1_Resize(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles PictureBox1.Resize
PictureBox1.Invalidate()
End Sub
Private image As System.Drawing.Imaging.Metafile
End Class
“schoolbus”是我作为资源添加的示例 .wmf 文件。文件格式是常见的症结所在,目前支持它的绘图程序并不多。你可以得到一个from here。
【讨论】:
再次感谢汉斯。我很高兴听到我不需要求助于任何不在框架中的第三方控件。我很感激。【参考方案2】:这是 2012 年的过时答案,不再支持 Adobe SVG 视图。
PictureBox 不支持基于矢量的图像。如果您不想使用 WPF,您可能需要下载 SVG 视图控件。这是来自Adobe:http://www.adobe.com/svg/viewer/install/
安装后,控制 DLL 文件应位于,例如,
C:\Program Files\Common Files\Adobe\SVG Viewer 3.0\NPSVG3.dll
.
如果您在表单上添加控件,则可以按如下所述加载文件。
AxSVGCtl1.SRC = Filename
Using Adobe's SVG control from .NET 展示了如何在 .NET 中使用 SVG 控件,尽管它是 C# 代码。
【讨论】:
感谢您的信息。我会记住这一点,以防我最终需要走这条路。 Adobe 页面现在显示“Adobe SVG Viewer Discontinued”。以上是关于图片框可以用来显示基于矢量的图像吗?的主要内容,如果未能解决你的问题,请参考以下文章