使用VB实现所见即所得功能

2016-02-19 13:35 2 1 收藏

下面图老师小编要向大家介绍下使用VB实现所见即所得功能,看起来复杂实则是简单的,掌握好技巧就OK,喜欢就赶紧收藏起来吧!

【 tulaoshi.com - 编程语言 】

一、方法概述

  为了在屏幕上模拟打印效果,我们使用VB的一个窗体来模拟一张打印纸。在VB中,每一个窗体都有一个PrintForm方法。使用PrintForm方法可以把一个窗体的内容完全一样地通过打印机打印出来。由于PrintForm方法在打印窗体内容的时候,对于窗体内的文字和图形都是同样地打印。所以通过简单的编程,使用PrintForm方法可以非常方便地实现图文混合打印。

  具体的方法是:  

  ①、确定用户可以使用的显示与打印双功能字模

  “所见即所得”程序中用户可以使用的字模必须是同时支持Windows的显示设备和打印设备的双功能字模。只有这些字模才可以在屏幕和打印机上产生一样的效果。因此,程序必须首先获得这些显示与打印双功能字模的名称。  

  ②、在屏幕上设置“纸张”窗体的大小

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  通过读取Windows打印管理器纸张尺寸的设置,在VB里建立一个与打印纸具有同样尺寸比例关系的窗体,作为屏幕上模拟打印效果的“纸张”,让用户在屏幕上就可以看到文字和图形在打印纸上的位置分布。  

  ③、用户在屏幕“纸张”上模拟打印效果

  在模拟打印的窗体中通过使用Print、Line、Circle等方法绘制文字和图形的,还可以使用图形框、Graph.VBX、OLE等控件绘制图形、统计图表、公式、艺术字型等等。  

  ④、将屏幕“纸张”的内容输出到打印机

(本文来源于图老师网站,更多请访问https://www.tulaoshi.com/bianchengyuyan/)

  使用窗体的PrintForm方法把第③步所绘制的文字和图形输出到打印机,得到和屏幕显示一模一样的打印拷贝,实现“所见即所得”。  

  二、打印机字模和显示器字模的精确匹配

  Windows的字模分为两类:打印机字模和显示器字模。各种TrueType字模(如宋体、黑体字模)都是显示与打印双功能字模。其他的非TrueType字模就只能用于显示或打印。

  如果在模拟打印窗体的文字输出中使用了只能用于显示的字模,那么当PrintForm方法执行的时候,Windows就只能在打印字模中查找一个尽量和这个显示字模字型匹配的字模来进行打印。这样将导致得到的打印拷贝与屏幕显示一致。

  为了使程序获得“所见即所得”的能力,必须在窗体输出中使用显示与打印双功能字模。因此,程序获得“所见即所得”能力的一个关键是:确保在屏幕输出中只使用显示与打印双功能字模。

  在VB中提供了两个全局对象:屏幕对象Screen和打印机对象Printer。两个对象都提供了FontCount属性和Fonts属性。FontCount属性提供了可使用字模的数量,而Fonts属性提供了可使用字模的名称。在程序中,我们可以取出Screen对象和Printer对象所共同拥有的字模,这些字模就是所有的显示与打印双功能字模。具体的程序如下:

  首先设置一个列表框,取名List1,然后调用下面的GetFont函数,在List1中就存放所有显示与打印双功能字模的名称。  

  SubGetFont()
  Fori=0ToScreen.FontCount-1
  Forj=0ToPrinter.FontCount-1
  IfScreen.Fonts(i)=Printer.Fonts(j)Then
  List1.AddItem(Screen.Fonts(i))
  EndIf
  Nextj
  Nexti
  EndSub

->

来源:https://www.tulaoshi.com/n/20160219/1604716.html

延伸阅读
Type POINTAPI x As Long y As LongEnd TypeDeclare Function GetCursorPos Lib "user32" Alias "GetCursorPos" _ (lpPoint As POINTAPI) As Long'隐藏MousePublic Sub toHideCursor()ShowCursor 0End Sub'显示MousePublic Sub toShowCursor()ShowCursor 1End Sub
前一阵有人在VB专家门诊中提出一个问题,如何在VB中实现打开图像文件的预览,虽然给出了300分的高分,回答着却寥寥无几。我在参照了DELPHI的源代码后在VB中实现了其部分图像预览功能,在中文WINDOWS98 SE下测试通过。 从MSDN中可以知道调用文件打开通用对话框需调用API 函数GetOpenFileName,原形如下: BOOL GetOpenFileName( LP...
在c++中是很容易实现,,因为c++可以操纵指针,,但是vb不是很好的玩这个,,所以需要通过类库来实现 说白了就是找个中间层,,让他翻译成vb能够认识的玩艺,,不说废话,,开始咯 中文实名无非是用ie 的iurlsearchhook,但是3721可不是这么玩得,,他是使用api hook拦截 ie commbox的消息,,,你根本就快不过他,,嘿嘿,,3721阴险把,,虽...
在微软的很多软件(如WORD)的工具栏中,都采用一种浮动按纽,即正常情况下按纽的图标呈灰色,当鼠标移动到某一按纽时,该按纽自动向上凸起且变为彩色,并在按纽的右下方有一标签提示该按纽的功能,鼠标移开后又自动还原,这种按纽用VB实现时,方法如下: 1.先用绘图工具作出按纽图标后存盘(如1.bmp),再用图象处理软件将该图标转换为灰度...

经验教程

954

收藏

95
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部