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

「schoolbus」は、リソースとして追加したサンプルの .wmf ファイルです。ファイル形式は通常の難点であり、まだサポートしているペイント プログラムはそれほど多くありません。ここから入手できます。

于 2012-09-25T20:50:06.113 に答える
3

これは2012年からの古い回答であり、AdobeSVGビューはサポートされなくなりました。

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

.NETからAdobeのSVGコントロールを使用すると、C#コードであるにもかかわらず.NETでSVGコントロールを使用する方法が示されます。

于 2012-09-25T19:15:18.557 に答える