前提・実現したいこと
WMFのファイルサイズを変えずにリサイズしたい。
発生している問題・エラーメッセージ
リサイズするとファイルサイズが2倍近くなる
大きくならないやり方があれば教えてください。
他の言語でも構いません。
ツールがあるなら、その紹介でも良いので教えてください。
該当のソースコード
VisualBasicとなってるけど、VisualBasic.Netです。
VisualBasic
1 Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click 2 Dim gra As Graphics = CreateGraphics() 3 Dim ipHdc As IntPtr = gra.GetHdc() 4 5 Dim FileName As String = "変換前.wmf" 6 Dim FileName2 As String = "変換後.wmf" 7 8 ' 元ファイル読み込み 9 Dim metafile As Metafile 10 Dim sr As Stream = New FileStream(FileName, System.IO.FileMode.Open, System.IO.FileAccess.Read) 11 metafile = New Metafile(sr) 12 sr.Dispose() 13 14 ' 貼り付け先作成 15 Dim metafile2 As Metafile 16 metafile2 = New Metafile(FileName2, ipHdc, New Rectangle(0, 0, metafile.Width / 2, metafile.Height / 2), MetafileFrameUnit.Pixel) 17 Dim g As Graphics = Graphics.FromImage(metafile2) 18 19 ' 貼り付け 20 g.DrawImage(metafile, New Rectangle(0, 0, metafile.Width / 2, metafile.Height / 2)) 21 22 ' 保存 23 g.Save() 24 25 ' 後処理 26 g.Dispose() 27 metafile.Dispose() 28 metafile2.Dispose() 29 30 gra.ReleaseHdc(ipHdc) 31 32 End Sub
試したこと?
[MS-EMF]: Enhanced Metafile Format
を見て
拡張メタファイルの変更の例(VB)
を参考に、.Netで実装しようとしたのだけども
APIを.Netで使う方法がまだ未熟なためだと思うのですが挫折…
それに、全ての要素に対して変更をしないといけないというのとか
色々あって、これで実装するのはとても大変そう。
補足情報(FW/ツールのバージョンなど)
Microsoft Visual Studio Community 2019 Version 16.9.1
Microsoft .NET Framework Version 4.8.03761
WMFファイルのサンプルは、パソコンのCドライブとかをWMFで検索したら
大抵、出てくると思います。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/05/06 07:57 編集
2021/05/06 08:55
2021/05/06 09:06