- 締切済み
VB6でのピクチャボックスの印字方法
現在、VB6からのピクチャボックス印字に困っています。 ピクチャボックスに貼り付けている画像はメタファイル(.emf)ですが、これをPrinterオブジェクトで印字すると、画質が鮮明になりません。また、同じファイルをExcelに貼り付け印字するとすごく鮮明に印字されます。 ExcelのようにVB6できれいに印字させるのはどうしたら良いのでしょうか?
- みんなの回答 (1)
- 専門家の回答
みんなの回答
- ARC
- ベストアンサー率46% (643/1383)
そりゃぁ、ピクチャボックスの方はビットマップに変換されていますから、これを印刷しても元のベクトルデータの鮮明さを得ることは出来ません。 えーと、確か、APIでメタファイルを描画する命令があったような気が……… うん。こんな感じで出来るみたいです。 Option Explicit Private Declare Function GetEnhMetaFile Lib "gdi32" Alias "GetEnhMetaFileA" (ByVal lpszMetaFile As String) As Long Private Declare Function PlayEnhMetaFile Lib "gdi32" (ByVal hdc As Long, ByVal hEmf As Long, lpRect As RECT) As Long Private Declare Function CloseEnhMetaFile Lib "gdi32" (ByVal hdc As Long) As Long Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type Private Sub Command1_Click() Dim prt As Printer Dim hEmf As Long Dim sFileName As String Dim rectPrt As RECT 'EMF読む sFileName = "d:\temp\u12-2.emf" & vbNullChar hEmf = GetEnhMetaFile(sFileName) '印刷 Printer.ScaleMode = vbTwips Printer.PSet (0, 0), vbWhite With rectPrt .Left = 567 .Top = 567 .Right = 1500 .Bottom = 1500 End With Call PlayEnhMetaFile(Printer.hdc, hEmf, rectPrt) Printer.EndDoc 'EMF閉じる Call CloseEnhMetaFile(hEmf) End Sub ちなみに画像は↓から入手しました。