画像の印刷


nazca  2004-10-09 01:14:38  No: 116847

ラベルを印刷するプログラムを作成していますが、ゼロックスのプリンタに合わせて作成していたのですが、他のプリンタ(ゼロックス以外)で出力すると画像やラインがすこしずれて印刷されてしまいます。

'花DATA
STRMYFILE = Dir("" & App.Path & "\PICDATA\hana.bmp")
If STRMYFILE <> "" Then
    MYSTR = App.Path + "\PICDATA\" + STRMYFILE
    pictblt 3.5, 20, 34, 41, MYSTR, sift_x
End If

Sub pictblt(Left As Single, Top As Single, Width As Single, Height As Single, PASS As String, sift_x As Integer)
On Error GoTo ERR
Dim R_NAME As String
Dim X1 As Single, X2 As Single, Y1 As Single, Y2 As Single

  Set PICWK.Picture = LoadPicture(PASS)
  '1
  X1 = Left + sift_x
  Y1 = Top
  X2 = Width
  Y2 = Height
  Printer.PaintPicture PICWK.Picture, X1, Y1, X2, Y2

  Exit Sub
ERR:
End Sub

こんな感じのソースになっています。

開発環境
Windows2000
Visual Basic 6.0SP6


葉月  2004-10-09 01:25:20  No: 116848

だから何が聞きたいんですか?

画像は印刷されているわけだし
あるプリンタに合わせて作って
そのプリンタできれいに出ているなら問題ないように思えるのですが・・・


nazca  2004-10-09 01:36:52  No: 116849

説明足らずで失礼しました。

指摘の通りゼロックスでちゃんとでればいいのですが、他プリンタでも出せるように、と変更がありまして・・・
もちろん若干のずれは覚悟してたのですが、画像も1mmほど小さく印刷されてしまいます
文字はテキスト出力なので規定の位置に印刷されています。

ちなみに印刷方法は、Printerコマンドを使用しています。

同じような現象があってどう対処したのかあれば教えていただけませんか


葉月  2004-10-15 21:32:00  No: 116850

プリンタ個体差は出ます
これはマイクロソフト製品でも出るはずです

また、同一プリンタでもドライババージョンによっても変わったりもします
(大きく変わることはまれですが・・・)

破線も薄い、もしくは細い実線で印字されたり
各々のプリンタにチューンした設定が必要になると思います

話をつける時に
「基本はこのゼロックスで印字してください、他のプリンタは使用は可能ですが
、メーカーや型毎に個体差が発生するため、若干ズレが生じる可能性があります」
と言っておかないと後々全てのプリンタに対応する羽目にもなりかねないですね
要するに・・・
「仕様です!」というわけですが・・・

もし、この辺対応できる人がいたら私も知りたいです


ねろ  2004-10-16 06:40:25  No: 116851

何が何に対してずれるのでしょうか?
位置の細かい設定が出来るように、プログラムして
一番最初にクライアントにチューニングしてもらい
プリンター毎にレジストリーかINIファイルにでも書き込むようにしたら
いかがでしょうか。
細かな設定はVBでは無理でしょうが、大まかな設定なら
出来ると思いますが。
>文字はテキスト出力なので規定の位置に印刷されています。
これだとまだ脈は有るかも。
私は規定の位置に文字が来なくて散々苦労しましたが。


ぽつ  2004-11-05 01:03:03  No: 116852

プリンターやドライバにより寸法が変わってしまうとき
プリンターオブジェクトの
「Printer.TwipsPerPixelX」を使用して調整してますが
だめでしょうか。
PaintPictureのX1,X2,Y1,Y2引数の値を算出してます。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加