- 締切済み
逆方向印刷をしたい。(VB6)
逆方向印刷機能のついていないレーザープリンタを使っています。 印刷文の長さに応じて縦印刷か横印刷かを決めているのですが、縦と横で、印刷方向が合いません。 ちょうど紙を180°回転させたように印刷することは無理でしょうか。
- みんなの回答 (9)
- 専門家の回答
みんなの回答
- 2ch
- ベストアンサー率51% (64/125)
#8はピクチャボックスをAutoRedraw = Trueでいけるはずです。 ただし、制限があります。 「画面に表示させなければならない」 という点です。 画面にテキストを一度も表示させないのであれば、#5の発言が一番いいように思えてきました。 っていうのは、印刷を必要としないバックも、「白色」としての印刷対象になってしまうからです。 印刷部分が関数になっているとしたならば、その部分を丸々作り直さなければなりませんが、、、、 でもそれが一番まともな方法です。 私が発言したのは、既存を壊さないにしても、邪道です。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=194114 できるだけ付き合います。 わからなかったら言ってください。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
これだったら? Picture2.PaintPicture Picture1.Image, Picture2.ScaleWidth, Picture2.ScaleHeight, -Picture1.ScaleWidth, -Picture1.ScaleHeight
補足
イメージは同じサイズで180°回転しますが、文字は転送されません。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
>でも印刷がうまくいきません 実際どのようにうまくいってないのかが不明です。 プリンタがうんともすんとも? 印刷レイアウトが壊れる?
補足
(試験場が)半角で、1258621612と印刷されます。 また、Picture1からPicture2に180°回転させて転送しようとした所、Picture1.Pictureに貼り付けてあるアイコン画像は回転するのですが文字はPicture2に出てきません。 Picture2.PaintPicture Picture1.Picture, Picture2.ScaleWidth, Picture2.ScaleHeight, -Picture1.ScaleWidth, -Picture1.ScaleHeight
- 2ch
- ベストアンサー率51% (64/125)
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
お礼
回答ありがとうございます。 要は picture.print "文" だったんですね。 でも印刷がうまくいきません。 Me.Picture1.Print "試験場" Printer.Print Picture1.Image Printer.EndDoc
- bikkuri
- ベストアンサー率33% (23/68)
今の環境で詳しくは調べられないので、雰囲気だけですが WindowsのAPIを使って印刷処理を記述すればできると 思います。 とは言っても、APIを使うと今の印刷部分をかなり変更する 必要があるかもしれませんので、 #4の方のようにPictureBoxなどに書いて全体を 回転させた方が楽かもしれません。 (印刷解像度にあわせて、大きなイメージを作成すべし)
- 2ch
- ベストアンサー率51% (64/125)
>印刷までの過程と、印刷命令はどのようにしているのか知りたいです と言ったのは意味があります。 ちゃす!田吾作さん http://oshiete1.goo.ne.jp/kotaeru.php3?q=446201 って感じで、画像なら反転可能です。 プリンタデバイスにPrintで文字を書き込んで印刷命令を発行をしているなら、ピクチャボックスに書き込んで、参考URLのように反転してピクチャボックスを印刷したらどうかなと思ったので発言してみたんだけど。 どうだろう? そうじゃなければ、オリジナルプリンタデバイスを作成するって方法があるけど、私は実現方法を知りません。 adobeのAcrobatを間にかませてPDFを画像に出力し反転保存する方法も思いつくけど、間にツール挟んだらやっぱ反則だと思うので、なんとも言えず。
お礼
回答ありがとうございます。
補足
プリンタデバイスにPrintで文字を書き込んで印刷命令を発行しています。けどピクチャボックスにテキストが入るのでしょうか。ちょっと本屋で勉強してきます。
- TAGOSAKU7
- ベストアンサー率65% (276/422)
#2に賛同
補足
回答ありがとうございます。 1日あたり20~40回くらいデータが送られて来て、専用のホルダーに溜まって行くようになっています。 本プログラムでは5秒間隔でそのホルダーをチェックし、最後に受信したファイルと比較して新しいファイルが届いていればそれを印刷するようになっています。
- 2ch
- ベストアンサー率51% (64/125)
なら逆に質問。 印刷データは、どのように作成しています? ピクチャ? それなら、180度回転してセットしてあげたらよいと思うけど、文字データなら厄介ですなぁ 印刷までの過程と、印刷命令はどのようにしているのか知りたいです。
補足
印刷データはテキストです。 体裁を考え、文量(行数)に応じて縦印刷にするか横印刷にするか自動判定しています。 用紙は閉じるための穴が空いたものが用紙カセットにセットしてあります。このため縦と横との関係が重要になってくるのです。 どういう訳か自宅のインクジェットプリンタとは逆の方向で印刷されてしまいます。 説明不足ですみませんでした。やっぱり無理なんでしょうか。
- 2ch
- ベストアンサー率51% (64/125)
補足
180°回転です。 縦と横の印刷はlandscape,portrateで切換できるのですが。
補足
文字は見事に反転しました。でも印刷できません。 半角の数字がチョロっと印刷されて終わりです。 Printer.Print Picture2.Image ではだめなのでしょうか。