ÄúÏÖÔÚµÄλÖÃÊÇ£º Èí¼þ > ¿ª·¢ÕßÍøÂç > ¼¼Êõ¸ú×Ù > ¼¼ÊõÀíÂÛ > ÕýÎÄ


-Win xpÖеĶàÖÖÍøÂç
-ÊÔÑéÊÔÑéÊÔÑéÊÔÑé
-ÓÃFreehandʵÏÖλͼʸÁ¿»¯
-ÍøÂçµç»°ÃæÃæ¹Û

¸Ä±ä˼·£¬´ÓÁíÒ»¸ö½Ç¶ÈʹÓöà̬
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ºËÐÄ£¬¶øÊÇÔÚ¶ÔÏóµÄ¸ß²ã¡¢ÔÚ±à³ÌÓïÑԺͷ½·¨µÄ½Ï¸ß²ãÉÏʵÏÖ¶à̬¡£
¡ö Ïà¹ØÄÚÈÝ
¸Ðл ·ÃÎÊÌì¼«Íø£¬Èç¹ûÄú¾õµÃ¸ÃÎÄÕÂÉæ¼°°æÈ¨ÎÊÌ⣬Çë¿´ÕâÀ