图片框可以用来显示基于矢量的图像吗?

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 年的过时答案,不再支持 Adob​​e 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”。

以上是关于图片框可以用来显示基于矢量的图像吗?的主要内容,如果未能解决你的问题,请参考以下文章

图片放大不失真 —— 矢量图

图片放大不失真 —— 矢量图

svg --- 可缩放矢量图形

ai怎么导出高清矢量图

SVG基本形状及样式设置

Andorid——SVG矢量动画深度学习