3

可以使用PictureBox控件显示基于矢量的图像吗?

我读过一篇文章,声称 PictureBox 可用于显示基于矢量的图像而不是位图图像。因此可以调整框的大小,并且图片将像矢量图像一样保持其质量。

所以我决定尝试一下,虽然我看起来很优质。我的矢量图像不是完全矢量的问题吗?如果这是不可能的,是否有另一种方法可以在不诉诸 WPF 的情况下做到这一点?

我正在使用 VB.NET。

4

2 回答 2

7

是的,这是可能的。它是元文件,而不是位图。最好使用 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

其中“校车”是我作为资源添加的示例 .wmf 文件。文件格式是常见的症结所在,目前支持它的绘图程序并不多。你可以从这里得到一个。

于 2012-09-25T20:50:06.113 回答
3

这是 2012 年的过时答案,不再支持 Adob​​e SVG 视图。

PictureBox 不支持基于矢量的图像。如果您不想使用 WPF,则可能需要下载 SVG 视图控件。这是来自Adob ​​e 的一个:http : //www.adobe.com/svg/viewer/install/

安装后,控制 DLL 文件应位于例如 C:\Program Files\Common Files\Adobe\SVG Viewer 3.0\NPSVG3.dll.

如果您在表单上添加控件,则可以按如下所述加载文件。

AxSVGCtl1.SRC = Filename

从 .NET 使用 Adob​​e 的 SVG 控件展示了如何在 .NET 中使用 SVG 控件,尽管它是 C# 代码。

于 2012-09-25T19:15:18.557 回答