• 締切済み

逆方向印刷をしたい。(VB6)

逆方向印刷機能のついていないレーザープリンタを使っています。 印刷文の長さに応じて縦印刷か横印刷かを決めているのですが、縦と横で、印刷方向が合いません。 ちょうど紙を180°回転させたように印刷することは無理でしょうか。

みんなの回答

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.9

#8はピクチャボックスをAutoRedraw = Trueでいけるはずです。 ただし、制限があります。 「画面に表示させなければならない」 という点です。 画面にテキストを一度も表示させないのであれば、#5の発言が一番いいように思えてきました。 っていうのは、印刷を必要としないバックも、「白色」としての印刷対象になってしまうからです。 印刷部分が関数になっているとしたならば、その部分を丸々作り直さなければなりませんが、、、、 でもそれが一番まともな方法です。 私が発言したのは、既存を壊さないにしても、邪道です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=194114 できるだけ付き合います。 わからなかったら言ってください。

noname#7879
質問者

補足

文字は見事に反転しました。でも印刷できません。 半角の数字がチョロっと印刷されて終わりです。 Printer.Print Picture2.Image ではだめなのでしょうか。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.8

これだったら? Picture2.PaintPicture Picture1.Image, Picture2.ScaleWidth, Picture2.ScaleHeight, -Picture1.ScaleWidth, -Picture1.ScaleHeight

noname#7879
質問者

補足

イメージは同じサイズで180°回転しますが、文字は転送されません。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.7

>でも印刷がうまくいきません 実際どのようにうまくいってないのかが不明です。 プリンタがうんともすんとも? 印刷レイアウトが壊れる?

noname#7879
質問者

補足

(試験場が)半角で、1258621612と印刷されます。 また、Picture1からPicture2に180°回転させて転送しようとした所、Picture1.Pictureに貼り付けてあるアイコン画像は回転するのですが文字はPicture2に出てきません。 Picture2.PaintPicture Picture1.Picture, Picture2.ScaleWidth, Picture2.ScaleHeight, -Picture1.ScaleWidth, -Picture1.ScaleHeight

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.6

Option Explicit Private Sub Command1_Click()   Dim lngX    As Long   Dim lngY    As Long   Dim lngColor  As Long      lngX = Int(Me.ScaleWidth * Rnd)   lngY = Int(Me.ScaleHeight * Rnd)   lngColor = QBColor(Int(8 * Rnd))   With Me.Picture1     .CurrentX = lngX     .CurrentY = lngY     .ForeColor = lngColor   End With   Me.Picture1.Print Format$(Now, "HH:NN:SS") End Sub Private Sub Form_Load()   Me.ScaleMode = vbPixels   Me.Picture1.ScaleMode = vbPixels      Call Me.Move(0, 0, 300 * Screen.TwipsPerPixelX, 300 * Screen.TwipsPerPixelY)   Call Me.Picture1.Move(0, 0, Me.ScaleWidth, 230)   Call Me.Command1.Move(0, Me.ScaleHeight - 40, Me.ScaleWidth, 40)      With Me.Picture1     .Cls     .AutoRedraw = True   End With   With Me.Command1     .Caption = "実行"   End With End Sub

noname#7879
質問者

お礼

回答ありがとうございます。 要は picture.print "文" だったんですね。 でも印刷がうまくいきません。   Me.Picture1.Print "試験場" Printer.Print Picture1.Image Printer.EndDoc

  • bikkuri
  • ベストアンサー率33% (23/68)
回答No.5

今の環境で詳しくは調べられないので、雰囲気だけですが WindowsのAPIを使って印刷処理を記述すればできると 思います。 とは言っても、APIを使うと今の印刷部分をかなり変更する 必要があるかもしれませんので、 #4の方のようにPictureBoxなどに書いて全体を 回転させた方が楽かもしれません。 (印刷解像度にあわせて、大きなイメージを作成すべし)

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.4

>印刷までの過程と、印刷命令はどのようにしているのか知りたいです と言ったのは意味があります。 ちゃす!田吾作さん http://oshiete1.goo.ne.jp/kotaeru.php3?q=446201 って感じで、画像なら反転可能です。 プリンタデバイスにPrintで文字を書き込んで印刷命令を発行をしているなら、ピクチャボックスに書き込んで、参考URLのように反転してピクチャボックスを印刷したらどうかなと思ったので発言してみたんだけど。 どうだろう? そうじゃなければ、オリジナルプリンタデバイスを作成するって方法があるけど、私は実現方法を知りません。 adobeのAcrobatを間にかませてPDFを画像に出力し反転保存する方法も思いつくけど、間にツール挟んだらやっぱ反則だと思うので、なんとも言えず。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=446201
noname#7879
質問者

お礼

回答ありがとうございます。

noname#7879
質問者

補足

プリンタデバイスにPrintで文字を書き込んで印刷命令を発行しています。けどピクチャボックスにテキストが入るのでしょうか。ちょっと本屋で勉強してきます。

  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

#2に賛同

noname#7879
質問者

補足

回答ありがとうございます。 1日あたり20~40回くらいデータが送られて来て、専用のホルダーに溜まって行くようになっています。 本プログラムでは5秒間隔でそのホルダーをチェックし、最後に受信したファイルと比較して新しいファイルが届いていればそれを印刷するようになっています。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.2

なら逆に質問。 印刷データは、どのように作成しています? ピクチャ? それなら、180度回転してセットしてあげたらよいと思うけど、文字データなら厄介ですなぁ 印刷までの過程と、印刷命令はどのようにしているのか知りたいです。

noname#7879
質問者

補足

印刷データはテキストです。 体裁を考え、文量(行数)に応じて縦印刷にするか横印刷にするか自動判定しています。 用紙は閉じるための穴が空いたものが用紙カセットにセットしてあります。このため縦と横との関係が重要になってくるのです。 どういう訳か自宅のインクジェットプリンタとは逆の方向で印刷されてしまいます。 説明不足ですみませんでした。やっぱり無理なんでしょうか。

  • 2ch
  • ベストアンサー率51% (64/125)
回答No.1
参考URL:
http://www.vbvbvb.com/jp/gtips/0301/gSetPrinterDmOrientation.html
noname#7879
質問者

補足

180°回転です。 縦と横の印刷はlandscape,portrateで切換できるのですが。

関連するQ&A