| | | ¸Ä±ä˼·£¬´ÓÁíÒ»¸ö½Ç¶ÈʹÓöà̬ | | 2000-11-01¡¤
¡¤ÍõÎÄÌΡ¤¡¤Éµ¶ùVBÔ°
| ÷ÕßÖ÷Ò³£ºÉµ¶ùVBÔ°¡¡×÷ÕßÐÅÏä:ÍõÎÄÌÎ
¡¡¡¡×÷ÕßÔÚд¡¶Éµ¹Ï´ò±í¡·²¿¼þʱ£¬Ô±¾ÏëÌṩ´òÓ¡Ô¤ÀÀ¹¦ÄÜ£¬Òòµ±Ê±ÑÛ½ç½ÏÕ£¬ËùÖªµÀµÄÖ»ÓÐÒ»¸ö·½·¨ÊµÏÖ´òÓ¡Ô¤ÀÀ£º ¶¨ÒåÒ»¸ö Object ±äÁ¿£¨È磺ObjPrn£©£¬ÓøñäÁ¿Ìæ»»³ÌÐòÖеÄÓë´òÓ¡ÓйصÄÓï¾äÖеÄ
Printer ¶ÔÏ󣬴òӡʱ£¬Ê×ÏÈÉèÖÃ
Set ObjPrn = Printer
Ô¤ÀÀʱÉèÖÃ
Set ObjPrn = frmPreV.Picture1
¡¡¡¡ÓÃÉÏÊö·½·¨ËäÈ»¿ÉÒÔʵÏÖ´òÓ¡ºÍÔ¤ÀÀ£¬µ«ÊÇ£¬ÏÔÈ»¶Ô´òÓ¡»úºÍʵÏÖÔ¤ÀÀµÄͼÏñ¿Ø¼þµÄ·ÃÎʶ¼ÊǺóÆÚ°î¶¨µÄ£¬ÕâÔÚЧÂÊÉÏÊDz»¸ßµÄ¡£´òËãʹÓöà̬¼¼Êõ£¬¿ÉÊÇ Printer
¶ÔÏóºÍ Picturebox¿Ø¼þ²»ÊÇ´ÓÒ»¸öÀࣨVBÖпÉÒýÓõģ©ÅÉÉúµÄ¡£ÒòÎÞ·¨ÊµÏÖ´òÓ¡ºÍÔ¤ÀÀµÄǰÆÚ°ó¶¨£¬¹ÊûÓÐÌṩ´òÓ¡Ô¤ÀÀ¹¦ÄÜ¡£
¡¡¡¡Ò»Ì죬µ±ÔÙ´ÎÔĶÁVB°ïÖúÖеĶà̬Õ½Úʱ£¬Í»È»Ïëµ½ÁËÒ»¸ö·½·¨£¬Ê¹Óø÷½·¨£¬Ö»ÒªÁ½¸öÀà¾ßÓÐÏàͬµÄ²¿·Ö½Ó¿Ú£¨·½·¨¡¢ÊôÐÔ¼°²ÎÊý£©£¬¼´±ãÕâÁ½¸öÀàºÁ²»Ïà¸É£¬Ò²¿ÉÒÔͨ¹ý±äÏàÓöà̬¼¼ÊõÌṩ¶ÔÕâÁ½¸öÀàµÄǰÆÚ°ó¶¨¡£
¶à̬ÊǸÉʲôµÄ£¿
¡¡¡¡MSDN˵£º¶à̬Òâζ×ÅÐí¶àÀà¿ÉÒÔÌṩͬÑùµÄÊôÐÔ»òÕß·½·¨£¬¶øÇÒµ÷ÓÃÕßÔÚµ÷ÓÃÕâЩÊôÐÔ»ò·½·¨Ö®Ç°£¬²»±ØÖªµÀij¸ö¶ÔÏóÊôÓÚʲôÀà¡£
¶à̬µÄÒâÒåÖ®Ò»¾ÍÊÇ£¬Í¨¹ý¶à̬½Ó¿Ú£¬¶Ô¶à¸ö²»Í¬ÀàµÄ·ÃÎÊ¿ÉÒÔ»ñµÃ¸ßЧµÄǰÆÚ°ó¶¨¡£
¡¡¡¡Ò»°ãÀ´Ëµ£¬Èç¹û¼¸¸öÀà¾ßÓв¿·ÖÏàͬµÄÊôÐÔ¡¢·½·¨£¬µ«È´²»ÊÇÓöà̬½Ó¿ÚʵÏֵģ¨ÀýÈçPrinterºÍForm£©£¬½«²»ÄÜÌṩÀàËÆ¶à̬µÄÐÔÄÜ¡£
µ«ÊÇ£¬¡°Èí¼þ¡±ÕýÈçÆäÃû×ÖÖеġ°Èí¡±£¬ÊÇÒ»¸öÁé»îµÄ¡¢¿ÉËܵĶ«Î÷£¬ÎÒÃÇ¿ÉÒԸıä˼άģʽ£¬»»Ò»¸ö½Ç¶È£ºÃ»Óжà̬½Ó¿ÚµÄÁ½¸öÀࣨÈçPrinter¡¢Picturebox£©ÈçͬÁ½¸öÈ˲»Í¬¸¸£¬²»ÊÇÐֵܣ»µ«ÎÒÃÇ¿ÉÒÔÈÃÆä×ÓͬȢһ¼Ò֮Ů£¨ÁíÍâ¾ßÓжà̬½Ó¿ÚµÄÁ½¸öÀࣩ£¬Æä×ÓΪÁ¬½ó£¬Æä¶ùϱΪ½ãÃ㬶øÍ¨¹ýÆä¶ùϱ·ÃÎÊÆä±¾È˾ßÓÐÏàͬµÄ·¾¶¡£
¡¡¡¡»¹ÒÔÉÏÀý£¬ÆäÖеĹؼüÊÇ£ºÌí¼ÓÈý¸öÀ࣬·Ö±ðPrinterÖ®ÆÞ¡¢PictureboxÖ®ÆÞ¡¢¶þŮ֮¸¸£¨ÔÚ¶þÅ®ÖÐҪʵÏֵġ¢PrinterºÍPicturebox¹²ÓеIJ¿·Ö½Ó¿Ú£©¡£ÏÂÃæ¾ÍÓôòÓ¡ºÍÔ¤ÀÀΪÀý£¬½éÉܸ÷½·¨£º
µÚÒ»²½¡¢Ìí¼ÓÒ»¸ö³éÏóÀ࣬ÔÚ¸ÃÀàÖж¨Ò干ͬµÄ·½·¨ºÍÊôÐÔ¡£
¡¡¡¡Èç¹û·½·¨Ãû³ÆÊÇVB¹Ø¼ü×Ö£¬¿ÉÒÔÐ޸ģ¨ÈçLine·½·¨£¬±¾ÀýÖиÄΪpLine·½·¨£©£»Èç¹û²ÎÊýÐÎʽ²»·ûºÏVBÓï·¨£¬Ò²¿É×÷ÏàÓ¦Ð޸ģ¨Èç±¾ÀýÖÐLine·½·¨µÄ²ÎÊý£¬Ó¦Îª"(X1, -(X2,Y2),Forcolor,BF"£¬ÏÔÈ»£¬ÔÚVBÖеIJÎÊý²»ÄÜÓÃÕâÖÖÐÎʽ£»»¹ÓÐPrint·½·¨£¬´òÓ¡²ÎÊýÖ®¼ä¡¢ºóÃæ¿ÉÒÔ¸ú¶ººÅ¡¢·ÖºÅµÈ£¬Ò²ÒªÏàÓ¦¸Ä±ä£¬²¢ÇÒ²»ÄÜÌṩȫ²¿ÔÀ´Print·½·¨¹¦ÄÜ£©
£º
ÀàÃû£ºIMyPrinter£¬Îª¼ò»¯£¬Ê¾ÀýÖнö°üº¬×÷ΪʾÀýµÄ½Ó¿Ú¡£
Public Property Get CurrentX() As Single
End Property
Public Property Let CurrentX(ByVal RHS As Single)
End Property
Public Sub EndDoc()
End Sub
Public Property Get Font() As stdole.Font
End Property
Public Property Set Font(ByVal RHS As stdole.Font)
End Property
Public Sub PLine(ByVal X1 As Single, ByVal Y1 As Single, ByVal X2 As Single,
_
¡¡¡¡¡¡¡¡¡¡¡¡ByVal Y2 As Single, Optional ByVal HasB As Boolean = False, _
¡¡¡¡¡¡¡¡¡¡¡¡Optional ByVal HasF As Boolean = False)
End Sub
Public Function ScaleX(ByVal Width As Single, Optional ByVal FromScale As Variant,
_
¡¡¡¡¡¡¡¡¡¡¡¡Optional ByVal ToScale As Variant) As Single
End Function
Public Function TextWidth(ByVal Str As String) As Single
End Function
Public Property Let Width(ByVal RHS As Long)
End Property
Public Property Get Width() As Long
End Property
Public Sub PPrint(Optional ByVal F0D1H2 As Integer = 0, Optional PrnInfo)
End Sub
µÚ¶þ²½¡¢Ìí¼ÓÁ½¸öÀ࣬ʵÏָýӿڣ¬²¢·Ö±ðÌṩPrinter¶ÔÏóºÍPicturebox¿Ø¼þÏàÓ¦µÄ¹¦ÄÜ¡£
¡¡¡¡ÏÂÃæ½öÒÔÔÚPicturebox¿Ø¼þÉÏʵÏָýӿڵÄÀàµÄ²¿·Ö´úÂë×÷ΪʾÀý£º»¹ÐèÒªÌí¼ÓÒ»¸öʵÏÖÔ¤ÀÀµÄ´°Ì壨frmPreView£©£¬ÔÚÉÏÃæÌí¼ÓÒ»¸öPicturebox¿Ø¼þ£¨pic£©
ÀàÃû£ºMyPic
Implements IMyPrinter
Dim frm As frmPreview
Private pic As PictureBox
Private Sub Class_Initialize()
¡¡Set frm = New frmPreview
¡¡Load frm
¡¡Set pic = frm.pic
End Sub
Private Sub Class_Terminate()
¡¡Set pic = Nothing
¡¡Unload frm
¡¡Set frm = Nothing
End Sub
Private Property Let IMyPrinter_CurrentX(ByVal RHS As Single)
¡¡pic.CurrentX = RHS
End Property
Private Property Get IMyPrinter_CurrentX() As Single
¡¡IMyPrinter_CurrentX = pic.CurrentX
End Property
Private Sub IMyPrinter_EndDoc()
¡¡frm.Show vbModal
End Sub
Private Property Get IMyPrinter_Font() As StdFont
Dim F As StdFont
¡¡Set F = New StdFont
¡¡With pic.Font
¡¡¡¡F.Size = .Size
¡¡¡¡F.Name = .Name
¡¡¡¡F.Size = .Size
¡¡¡¡F.Bold = .Bold
¡¡¡¡F.Italic = .Italic
¡¡¡¡F.Strikethrough = .Strikethrough
¡¡¡¡F.Underline = .Underline
¡¡¡¡F.Weight = .Weight
¡¡End With
Set IMyPrinter_Font = F
End Property
Private Property Set IMyPrinter_Font(ByVal RHS As StdFont)
¡¡With pic.Font
¡¡¡¡.Size = RHS.Size
¡¡¡¡.Name = RHS.Name
¡¡¡¡.Size = RHS.Size
¡¡¡¡.Bold = RHS.Bold
¡¡¡¡.Italic = RHS.Italic
¡¡¡¡.Strikethrough = RHS.Strikethrough
¡¡¡¡.Underline = RHS.Underline
¡¡¡¡.Weight = RHS.Weight
¡¡End With
End Property
Private Sub IMyPrinter_PLine(ByVal X1 As Single, ByVal Y1 As Single, ByVal
X2 As Single, ByVal Y2 As Single, Optional ByVal HasB As Boolean = False, Optional
ByVal HasF As Boolean = False)
¡¡If HasF Then "±¾ÀýÖÐûÓÐÌṩÑÕɫѡÏî
¡¡¡¡pic.Line (X1, Y1)-(X2, Y2), , BF
¡¡ElseIf HasB Then
¡¡¡¡pic.Line (X1, Y1)-(X2, Y2), , B
¡¡Else
¡¡¡¡pic.Line (X1, Y1)-(X2, Y2)
¡¡End If
End Sub
Private Sub IMyPrinter_PPrint(Optional ByVal F0D1H2 As Integer = 0, Optional
PrnInfo As Variant)
¡¡Select Case F0D1H2 "¸Ã²ÎÊýΪ0:¸ú·ÖºÅ;1:¸ú¶ººÅ;2:ÎÞ·ûºÅ
¡¡¡¡Case 0
¡¡¡¡¡¡If Not IsMissing(PrnInfo) Then
¡¡¡¡¡¡¡¡pic.Print PrnInfo;
¡¡¡¡¡¡End If
¡¡¡¡Case 1
¡¡¡¡¡¡If Not IsMissing(PrnInfo) Then
¡¡¡¡¡¡¡¡pic.Print PrnInfo,
¡¡¡¡¡¡End If
¡¡¡¡Case 2
¡¡¡¡¡¡If Not IsMissing(PrnInfo) Then
¡¡¡¡¡¡¡¡pic.Print PrnInfo
¡¡¡¡¡¡Else
¡¡¡¡¡¡¡¡pic.Print
¡¡¡¡¡¡End If
¡¡End Select
End Sub
Private Function IMyPrinter_ScaleX(ByVal Width As Single, Optional ByVal FromScale
As Variant, Optional ByVal ToScale As Variant) As Single
¡¡IMyPrinter_ScaleX = pic.ScaleX(Width, FromScale, ToScale)
End Function
Private Function IMyPrinter_TextWidth(ByVal Str As String) As Single
¡¡IMyPrinter_TextWidth = pic.TextWidth(Str)
End Function
Private Property Get IMyPrinter_Width() As Long
¡¡IMyPrinter_Width = pic.Width
End Property
Private Property Let IMyPrinter_Width(ByVal RHS As Long)
¡¡pic.Width = RHS
End Property
µÚÈý²½¡¢ÔÚÖ÷ÀàÄ£¿é¶¨ÒåÈçϱäÁ¿
Private cIMyPrn As IMyPrinter
Private cPic As MyPic
Private cPrn As MyPrn
ÔÚÖ÷ÀàÄ£¿éClass_InitializeʼþÖУ¬Ìí¼Ó£º
Set cPrn As New MyPrn
Set cIMyPrn = cPrn
ÔÚÖ÷ÀàÄ£¿éÖУ¬½«ÔÀ´ÓйشòÓ¡Óï¾äÖеÄPrinterÌæ»»ÎªcIMyPrn¡£ÔÚʵÏÖÔ¤ÀÀµÄ·½·¨ÖУ¬Ìí¼Ó£º
Set cPic = New MyPic
Set cIMyPrn = cMyPic
ÐÞ¸ÄÌØÊâÀàÐ͵ÄÓï¾ä£¨ÈçLine¡¢Print£¬·½·¨ÃûºÍ²ÎÊýÐÎʽÒѾ¸Ä±ä£¬½«Æä¸ÄΪ·ûºÏcIMyPrnÓï·¨µÄÓï¾ä£©
Ô¤ÀÀ½áÊøºó£º
Set cIMyPrn = cPrn
Set cPic = Nothing
¡¡¡¡Í¨¹ýÉÏÃæµÄ·½·¨£¬¾Í¿ÉÒÔÓÃÒ»¸öIMyPrinter±äÁ¿£¬ÊµÏÖ´òÓ¡ºÍÔ¤ÀÀµÄǰÆÚ°ó¶¨µ±È»£¬¸Ã·½·¨Î´±ØÊÇʵÏÖ´òÓ¡¡¢Ô¤ÀÀµÄÊ×Ñ¡£¬»¹¿ÉÒÔʹÓÃAPI·½·¨£¬Ö±½Ó²Ù×ÝÉ豸³¡¾°À´ÊµÏÖ´òÓ¡Ô¤ÀÀ£¬µ«¸Ã·½·¨µÄÒâÒå²»ÔÚÓÚ´Ë£¬ÆäÒâÒåÔÚÓڸ÷½·¨ÍØÕ¹ÁËVBÖÐÌṩµÄ¶à̬¼¼ÊõµÄÓ¦Ó÷¶Î§¡£
±¾Îĸ±±êÌâÖеÄËùν¡°¸ß²ã´Î¡±²»ÊÇ×÷Õß²ã´Î¸ß£¬¶øÊDZà³Ì·½·¨ºÍ˼·£¬²»ÊÇÃæÏòµ×²ã¡¢ÃæÏòWinºËÐÄ£¬¶øÊÇÔÚ¶ÔÏóµÄ¸ß²ã¡¢ÔÚ±à³ÌÓïÑԺͷ½·¨µÄ½Ï¸ß²ãÉÏʵÏÖ¶à̬¡£
| | | ¸Ðл
·ÃÎÊÌì¼«Íø£¬Èç¹ûÄú¾õµÃ¸ÃÎÄÕÂÉæ¼°°æÈ¨ÎÊÌ⣬Çë¿´ÕâÀ
|
|