以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [求助]【条形码】能保存矢量图吗?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=85956)

--  作者:hui986
--  发布时间:2016/6/6 18:17:00
--  [求助]【条形码】能保存矢量图吗?
如题,我想将生成的条形码保存为【矢量图】,这样便于我们做图时的应用!

SaveImage

将生成的图片保存为文件,语法:

SaveImage(FileName, DPI)

FileName:指定文件名。
DPI:      可选参数,每英寸的像素点数,默认为300,DPI越大,图像越清晰。

系统会根据文件的扩展名以合适的格式保存文件,例如文件名是“c:\\data\\bar.bmp”,系统会以BMP格式保存文件,如果文件名是"c:\\data\\bar.wmf",则以WMF格式保存文件。

示例:

With e.Form.Controls("BarCode1")
    .SaveImage(
"c:\\data\\001.bmp")
    .SaveImage(
"c:\\data\\002.bmp",600)
End
 
With



正常的WMF是矢量图,但是出来是图片(点阵图)!

[此贴子已经被作者于2016/6/6 18:18:32编辑过]

--  作者:Hyphen
--  发布时间:2016/6/7 8:34:00
--  
试试
Dim BarCode1 As WinForm.BarCode = e.Form.Controls("BarCode1")
Dim bmp = New Bitmap(BarCode1.GetImage())
Dim gs = Graphics.FromImage(bmp)
Dim mf = New Imaging.Metafile("D:\\005.wmf", gs.GetHdc())
Dim g = Graphics.FromImage(mf)
g.DrawImageUnscaled(bmp, 0, 0)
g.Save()
g.Dispose()
mf.Dispose()

--  作者:hui986
--  发布时间:2016/6/7 12:29:00
--  
谢谢!我刚测试过,还是不行!
生成出来还是点阵图


Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.Code128
Bar.Code = "010501301"
Bar.BarRatio = 0.8
Bar.BarHeight = 8
Bar.DisplayCode = False
\'bar.SaveImage("c:\\测试条形码.jpg",600)

Dim bmp = New Bitmap(bar.GetImage())
Dim gs = Graphics.FromImage(bmp)
Dim mf = New Imaging.Metafile("D:\\0051.wmf", gs.GetHdc())
Dim g = Graphics.FromImage(mf)
g.DrawImageUnscaled(bmp, 0, 0)
g.Save()
g.Dispose()

--  作者:Hyphen
--  发布时间:2016/6/7 14:30:00
--  
vs帮助说.NET Framework 的 GDI+ 组件没有可用来将文件另存为 .wmf 或 .emf 文件的编码器,实际保存的是png格式,可能要第三方的编码器才行,比如Adobe Illustrator SDKs:http://www.adobe.com/devnet/illustrator/sdk.html
或者提高一下图像质量

Dim Bar As New BarCodeBuilder
Bar.Symbology = Barpro.Symbology.Code128
Bar.Code = "010501301"
Bar.BarRatio = 0.8
Bar.BarHeight = 8
Bar.DisplayCode = False
\'bar.SaveImage("c:\\测试条形码.jpg",600)

Dim bmp = New Bitmap(bar.GetImage())
Dim gs = Graphics.FromImage(bmp)
Dim mf = New Imaging.Metafile("F:\\0051.wmf", gs.GetHdc())
Dim g = Graphics.FromImage(mf)
g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality
g.CompositingQuality = Drawing2D.CompositingQuality.HighQuality
g.InterpolationMode = Drawing2D.InterpolationMode.HighQualityBicubic
g.DrawImageUnscaled(bmp, 0, 0)
g.Save()
g.Dispose()

--  作者:hui986
--  发布时间:2016/6/7 14:43:00
--  
好的,非常感谢您的热心回复!
我现在的处理方式就是放大尺寸+ 提高分辨率!