矢量图,也称为面向对象的图像或绘图图像,在数学上定义为一系列由线连接的点。矢量文件中的图形元素称为对象。每个对象都是一个自成
矢量图 示例
一体的实体,它具有颜色、形状、轮廓、大小和屏幕位置等属性。矢量图可以在维持它原有清晰度和弯曲度的同时,多次移动和改变它的属性,而不会影响图例中的其它对象。这些特征使基于矢量的程序特别适用于图例和三维建模,因为它们通常要求能创建和操作单个对象。基于矢量的绘图同分辨率无关。这意味着它们可以按最高分辨率显示到输出设备上。
矢量图与位图最大的区别是,它不受分辨率的影响。因此在印刷时,可以任意放大或缩小图形而不会影响出图的清晰度。
[编辑本段]主要特点
矢量图的优点
(1)文件小;
(2)图像元素对象可编辑;
(3)图像放大或缩小不影响图像的分辨率;
(4)图像的分辨率不依赖于输出设备;
做个通俗的比喻来说:在一个画家画画的时候,旁边有一台摄像机,把画家整个画画的过程摄制下来了。这个画家画的这张画,可以认为是普通的图形文件(位图)。摄像机录制画家画画的过程的录像带,就是矢量图。那么怎么把这个矢量图最终转化成位图呢,找个机械手,让机械手根据录像带的内容重新画一次。就能得到一张新的画(位图)了。
看看这段代码
case WM_CREATE://录制过程
hdcEMF = CreateEnhMetaFile (NULL, NULL, NULL, NULL) ;
Rectangle (hdcEMF, 100, 100, 200, 200) ;
MoveToEx (hdcEMF, 100, 100, NULL) ;
LineTo (hdcEMF, 200, 200) ;
MoveToEx (hdcEMF, 200, 100, NULL) ;
LineTo (hdcEMF, 100, 200) ;
hemf = CloseEnhMetaFile (hdcEMF) ;
return 0 ;
case WM_PAINT://回放过程
hdc = BeginPaint (hwnd, &ps) ;
GetClientRect (hwnd, &rect) ;
rect.left = rect.right / 4 ;
rect.right = 3 * rect.right / 4 ;
rect.top = rect.bottom / 4 ;
rect.bottom = 3 * rect.bottom / 4 ;
PlayEnhMetaFile (hdc, hemf, &rect) ;//回放
EndPaint (hwnd, &ps) ;
那么 简谱软件为什么需要矢量图功能呢?
1 提高输出图像的精度。 举个例子, 我的显示器 精度为72dpi(dot per inch), 我的hp激光打印机的默认打印精度为600dpi。两个文件,一个位图文件,一个矢量图件。在屏幕上都显示为1 英寸长的线段。 打印这两个线段。你就会发现。位图文件打印出来的线段变短了,只有 72/600 英寸长了, 但矢量图文件打印出来的还是1 英寸。这是为什么呢, 我们来看看这两个文件的内部是怎么记录这两个线段的。
位图: (0,0, 黑色),(0, 1, 黑色),...(0, 72, 黑色)
矢量图: 0.01英寸
比例 LINE( 1
线宽, 黑色
线色,(0,0)
起点, (0,100)
终点)
打印机在打印位图文件的时候,忠实的打印出了72个点(由于打印机的每个点只有1/600英寸大小,所以整个线段的最终长度就只有72/600了),为了打印出1英寸的线段,就只能把这个位图放大600/72倍,那么原来紧挨着的两个点(0,0,黑色)和(0,1,黑色)变成了(0,0,黑色)和(0, 8, 黑色)。 这样就需要在这两个点间插入7个点。这涉及到插值算法。目前的插值算法,对直线还凑合,稍微复杂一点的,就差强人意了。大家可以用位图软件(mspaint, photoshop etc) 画一个圆,然后放大10倍,看看效果就明白了。
而 在打印矢量图的时候,打印机会根据矢量图里的 单位线的起点终点信息,计算出需要打印600个墨点,从而取得较好的打印效果
2 有利于在其他矢量图软件里编辑
从上面可以看出,位图文件是以点为单位的。 而矢量图是以图元为单位(比如一个线段,一个圆), 比如如果发现音符和三连音粘在一起了,需要将三连音线移动一点,在位图编辑工具中,要选中和移动这个线比在矢量编辑软件中困难很多。具体大家在相应的工具中试试就知道了。
怎么生成一个矢量图文件?
其实,我们目前所有见到的简谱软件,在内存里,都是矢量形式的。只有在向屏幕输出的那一刻才转换成位图。保存一个矢量文件,也是一件很简单的事。首先用Windows API创建一个空的矢量文件(通常以emf为扩展名),然后把这个文件当成一种输出设备, 程序把向屏幕的输出动作(划线,输出字符串等)对着这个文件重做一次。然后保存。就是这么简单。
[
本帖最后由 三叶虫 于 10-1-9 17:13 编辑 ]
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有帐号?注册
x