C# 怎么把矢量图emf转换为wmf格式

guize2333 2016-04-13 02:20:27
因为需要用itextSharp向PDF添加emf的矢量图
但是由于iText的Image不支持emf格式图片
所以就想看看有没有能把emf格式转换为wmf格式的方法
...全文
747 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangxua_5669 2016-09-30
  • 打赏
  • 举报
回复
lz有没有解决?
qq_18449845 2016-04-20
  • 打赏
  • 举报
回复
最后怎么解决的,我最近也遇到了这个问题
xuzuning 2016-04-14
  • 打赏
  • 举报
回复
那我就不好说什么了 用微软提供的工具,生成微软的图片格式(wmf 是微软发明的),你还要说格式不对
guize2333 2016-04-14
  • 打赏
  • 举报
回复
引用 6 楼 xuzuning 的回复:
我是这样测试的
        protected override void OnLoad(EventArgs e)
        {
            string filePath = @"face.emf";
            Bitmap bmp = new Bitmap(220, 220);
            Graphics gs = Graphics.FromImage(bmp);
            Metafile mf = new Metafile(filePath, gs.GetHdc());
            Graphics g = Graphics.FromImage(mf);
            g.FillEllipse(Brushes.Gray, 0, 0, 100, 100);
            g.DrawEllipse(Pens.Black, 0, 0, 100, 100);
            g.DrawArc(new Pen(Color.Red, 10), 20, 20, 60, 60, 30, 120);
            g.Save();

            g.Dispose();
            mf.Dispose();

            var im = Bitmap.FromFile(@"face.emf");
            im.Save(@"face.wmf", ImageFormat.Wmf);
        }
0xD7 0xCD 正式的wmf格式文件开头的两个数据必然是这两个,但是你读取一下看一下,这个face.wmf虽然表面上是wmf格式的,但是他的数据格式实际上是不对的 对了,我使用Filestream读取的
xuzuning 2016-04-14
  • 打赏
  • 举报
回复
我是这样测试的
        protected override void OnLoad(EventArgs e)
{
string filePath = @"face.emf";
Bitmap bmp = new Bitmap(220, 220);
Graphics gs = Graphics.FromImage(bmp);
Metafile mf = new Metafile(filePath, gs.GetHdc());
Graphics g = Graphics.FromImage(mf);
g.FillEllipse(Brushes.Gray, 0, 0, 100, 100);
g.DrawEllipse(Pens.Black, 0, 0, 100, 100);
g.DrawArc(new Pen(Color.Red, 10), 20, 20, 60, 60, 30, 120);
g.Save();

g.Dispose();
mf.Dispose();

var im = Bitmap.FromFile(@"face.emf");
im.Save(@"face.wmf", ImageFormat.Wmf);
}

guize2333 2016-04-14
  • 打赏
  • 举报
回复
这个我试过,显示这样的错误
guize2333 2016-04-14
  • 打赏
  • 举报
回复
引用 3 楼 xuzuning 的回复:
var im = Bitmap.FromFile(@"face.emf");
im.Save(@"face.wmf", ImageFormat.Wmf);
这样就可以了,你自己测试一下
这个转换不通,显示 值不能为空。 参数名: encoder 在 System.Drawing.Image.Save(Stream stream, ImageCodecInfo encoder, EncoderParameters encoderParams) 在 System.Drawing.Image.Save(Stream stream, ImageFormat format)
xuzuning 2016-04-13
  • 打赏
  • 举报
回复
var im = Bitmap.FromFile(@"face.emf");
im.Save(@"face.wmf", ImageFormat.Wmf);
这样就可以了,你自己测试一下
guize2333 2016-04-13
  • 打赏
  • 举报
回复
自顶
guize2333 2016-04-13
  • 打赏
  • 举报
回复
自顶

110,552

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧