• ベストアンサー

VB6でのPicutre印刷について

現在、Windows7にてクリップボードの印刷を考えています 困っている事 PictureオブジェクトからHeight,Widthを取得できない 動き (1)クリップボードをPictureオブジェクトに複写 (2)上記PictureオブジェクトからHeight,Widthを取得できない(1ページに印刷するため) ※ここでエラーになります (3)print.paintPictureにて印刷 希望→同一実行ファイルにて、Windows2000も動作できる 何かヒントをお願いします

  • Koba5
  • お礼率81% (96/118)

質問者が選んだベストアンサー

  • ベストアンサー
  • uruz
  • ベストアンサー率49% (417/840)
回答No.2

「ここでエラーになります」どんな?具体的に書いてください。(VBがエラーメッセージを出すならその内容を省略せずに記載してください) ------------------------------------------ lngHeight = objPicture.Height←ここが取得できないプロパティがない lngWidth = objPicture.Width ------------------------------------------ PictureオブジェクトにHeight、Widthプロパティは存在します。 返される値の単位系はHiMetric(0.01 ミリメートル単位)です。 Printerオブジェクトの替わりにPictureBoxを使用して検証して見ましたが問題なく動作しました。 ただし、クリップボードに画像が存在しない場合はHeight、Widthプロパティは0を返しobjPrinter.PaintPictureメソッドはエラーとなります。

Koba5
質問者

お礼

uruzさん コメントありがとうございます 私の勘違いで、クリップボードに画像が存在しないためでした。 本当にありがとうございました。

その他の回答 (1)

  • uruz
  • ベストアンサー率49% (417/840)
回答No.1

>(2)上記PictureオブジェクトからHeight,Widthを取得できない(1ページに印刷するため) ※ここでエラーになります 質問の要点が見えません。 PictureBoxに貼り付けた画像のHeight,Widthが取得したい、ということ? 「ここでエラーになります」どんな?具体的に書いてください。 PictureBoxには貼り付けられた画像のサイズを返すプロパティやメソッドはありません。 PictureBoxのAutoSizeプロパティをTrueにセットし画像を貼り付けると貼り付けられた画像のサイズに応じてPictureBox自体のサイズが変更されますのでPictureBoxのHeight,Widthプロパティで画像のサイズを知ることができます。 真の画像のサイズを知るためには下記プロパティの設定も必要です。 Appearance=0 (フラット) BorderStyle=0 (なし)

Koba5
質問者

補足

実際のソースは、下記の雰囲気です Dim objPicture As Picture Set objPicture = Clipboard.GetData 'ピクチャーのサイズ lngHeight = objPicture.Height←ここが取得できないプロパティがない lngWidth = objPicture.Width '途中省略 ' ピクチャー印刷 objPrinter.PaintPicture objPicture, lngYLeft, lngYTop, lngWidth, lngHeight

関連するQ&A

  • VBの印刷について

    visual basic6の印刷について質問です。 現在ピクチャーボックス内にテキストボックスやオプションボタンなどの コントロールを配置しています。 それを印刷したいのですがうまくいきません。 各コントロールが認識されずに真っ白な状態で印刷されます。 以下のソースで各コントロールが認識されていないことがわかりました。 Private Sub print_cmd_Click() print_mt = MsgBox("印刷しますか?", vbYesNo,) If print_mt = vbYes Then Picture2.Picture = Picture2.Image SavePicture Picture2.Picture, App.Path & "\abc.bmp" End If End Sub bmpで表示しようとしても何も確認できません。。。 Printer.PaintPicture Picture1.Image Printer.EndDoc でやっても白紙ででてきます。 AutoRedrowはTrueにしてます。 なぜピクチャーボックス内のコントロールが認識されないのでしょうか? 各コントロールは正常に動作しています。

  • 画像の縮小

    ピクチャー画像の縮小を行いたいのですが、 sw = Picture1.ScaleWidth * 0.1 sh = Picture1.ScaleHeight * 0.1 w = Picture1.Width h = Picture1.Height Picture2.Height = h * 0.1 - Picture2.Height - Picture2.ScaleHeight Picture2.Width = w * 0.1 - Picture2.Width- Picture2.ScaleWidth Picture2.PaintPicture Picture1.Picture,0,0,sw,sh のようなプログラムを行うと、画面で見えている範囲のピクチャーは縮小してくれるのですが、VB画面からはみ出る部分は切れてしまいます。 ピクチャーを1つずつ、とって縮小していくとなると相当な時間がかかってしまうので、早く処理できる方法は無いでしょうか? ご存知の方は教えて下さい。

  • vb6で画面コピーで不具合対応方法

    始めまして。 OSは XP Pro SP2 VB6で、顧客情報のデータ入力画面に入力画面のハードコピーをするためのボタンをつくり、ボタンを押したらクリップボードの内容をPictureBoxにコピーするようにして、その内容を印刷するようにしたいのですが2つ不具合が発生してます。 下記2つの不具合の原因、対応方法を教えて頂きたくお願いします。  1.アクティブな画面でなく全体が印刷される。  2.画面を起動して一人目の顧客では入力画面では印刷されず、二人目の顧客を表示した状態で入力画面の印刷ボタンを押すと、一人目の顧客の入力画面が印刷される。 下記は、クリップボードにコピーし印刷する部分のコーディングです。 Global Const VK_SNAPSHOT = &H2C Global Const KEYEVENTF_KEYUP = &H2 keybd_event VK_SNAPSHOT, 1, 0, 0 keybd_event VK_SNAPSHOT, 1, KEYEVENTF_KEYUP , 0 RC = DoEvents() PicBox.Picture = Clipboard.GetData() lngHeight = PicBox.Height lngWidth = PicBox.Width Printer.PaintPicture PicBox, 0, 0, _ lngWidth, lngHeight  以上 ご教授よろしくおねがいします。

  • VBの印刷について

    VB6.0の印刷について質問です。 SendKeys "%{PRTSC}" コマンドボタンを押すと上記のソースが流れて Alt+プリントスクリーンと同じ動きをしています。 取得した情報を印刷するところまでをコマンドボタンを押した時に行いたいのですが印刷するための処理はどのように追加したらよいですか?

  • 印刷のクオリティ

    VB6より、PDFにて印刷物を作成するのですがアイコンが荒くて使い物になりません。 Printer.PaintPicture LoadPicture(jpgファイル),x1,y1,width,height でjpgファイルを指定します。jpgファイルはかなり解像度を上げています。それでも、このVBの命令だとあまりきれいではありません。 何かきれいになる方法はないでしょうか?

  • VB.NET ピクチャーボックスのImageの一部をクリップボードにコピー

    Picturebox1.Image = New Bitmap(Picturebox1.Width, Picturebox1.Height) Dim g As Graphics = Graphics.FromImage(Picturebox1.Image) これ以降 g.DrawLine 等で描画を行っています そして、ピクチャーボックスの一部の領域(矩形)を指定して クリップボードにコピーしたいのですがどうしたらいいでしょうか よろしくお願いします 他のピクチャーボックスにその一部をコピーできるだけでもいいのですが

  • VBからの印刷でページが順番に印刷されません。

    VBからPrinterオブジェクトを使用して複数ページを印刷しています。 Printer.print "1ページ目" Printer.EndDoc Printer.print "2ページ目" Printer.EndDoc Printer.print "3ページ目" Printer.EndDoc のように命令を実行すると、1,2,3の順に印刷されず、1,3,2の順に印刷されます。(いつもではありません) おそらくプリンタのプロパティのスプール周りの設定によってこのようになるのかなと思っているのですが、確実に印刷命令を発行した順番に紙が排出されるようにするにはどのようにしたらよいでしょうか?

  • スクショした画像の印刷で画像全体が印刷されない

    [環境] Windows7 Professional VisualStudio2010 Professional お世話になります。 タイトルの件で質問があります。 フォームにボタンを追加して、そのボタンをクリックすると そのときの画面全体(フォームではない)をスクリーンショットし、 クリップボードに保存しておきます。 そのクリップボードに保存した画像を印刷するのですが、 解像度の問題か、はたまた画像サイズが大きすぎるのか(1600*900) わかりませんが、どうしても全体が入りきらずに印刷されてしまいます。 (感覚的には左上から右下にかけて4分の3ほど印刷される。) VB.NETの機能としてある印刷プレビュー(PrintPreviewDialog)で印刷内容を確認しても同様でした。 ちなみにその画像をローカルに保存して確認したところ、 ちゃんと全体のスクショは撮れていました。 また、別フォームにPictureBoxを配置して、そこにクリップボードの画像を セットして確認しても、これまた問題ありませんでした。 下記が印刷のロジックになります。 '********************************************************************* '********************************************************************* 'イメージを保存する変数 Private memoryImage As Bitmap Private prt As New Printing.PrintDocument 'キャプチャ後印刷 Public Function HardCopy() Try 'イベントハンドラ追加 AddHandler prt.PrintPage, AddressOf prt_PrintPage '画面全体のイメージをクリップボードにコピー SendKeys.SendWait("^{PRTSC}") 'クリップボードにあるデータの取得 Dim d As IDataObject = Clipboard.GetDataObject() 'クリップボードにデータがあったか確認 If d IsNot Nothing Then 'ビットマップデータ形式に関連付けられているデータを取得 memoryImage = d.GetData(DataFormats.Bitmap) If img IsNot Nothing Then memoryImage = img img.Save("C:\Users\takazoe\Pictures\sample.bmp") Dim pd As PrintPreviewDialog = New PrintPreviewDialog prt.DefaultPageSettings.Landscape = True ' 印刷 'prt.Print() ' プレビュー pd.Document = prt pd.ShowDialog() '画面のイメージデータをクリップボードから削除 Clipboard.SetDataObject(New DataObject()) End If End If End Function 'PrintDocument1のPrintPageイベントハンドラ Private Sub prt_PrintPage(ByVal sender As Object, ByVal e As System.Drawing.Printing.PrintPageEventArgs) e.Graphics.DrawImage(memoryImage, 0, 0, memoryImage.Width, memoryImage.Height) e.HasMorePages = False End Sub '********************************************************************* '********************************************************************* 何か必要な情報がございましたら、言っていただけると助かります。 ご教示のほどよろしくお願いいたします。

  • VB6の印刷でメモリリーク

    VB6の印刷でメモリリーク VB6.0(SP6)について質問です。 PRINTERオブジェクトを使用して連続で印刷するとメモリリークが発生します。 プログラムは単純にPrint文で印刷しているのみですが、Printerオブジェクトに 問題があるのでしょうか? もしかしたら使用可能メモリ限界まで増加し続けるというWindowsの仕様でしょうか? お知恵をお貸しください。よろしくお願いします。 以下のソースを2秒周期のタイマで実行しています。 For iLoop = 0 To 100 Printer.CurrentX = iLoop Printer.CurrentY = iLoop Printer.Print "TEST" Next iLoop ’ テスト用にKILLDOCをしています Printer.KillDoc

  • 印刷に関して

    以前にも印刷関連でご質問させていただきましたが、 再度、どうしても解決したいことがありますので 質問させてください。 print関数を使い、ムービークリップを印刷するボタンを 設置しました。印刷はされるのですが、印刷のされかたが 最大で印刷されてしまいます。 例えば400×400のオブジェクトの場合、その大きさで印刷をかけたいのですが・・・。 なぜか用紙サイズと連動し用紙いっぱいに印刷されてしまいます。 スクリプトは下記です。 on (release) {  print(_root.インスタンス名,"bmovie"); } この他になにか指定するものはありますでしょうか? 何卒よろしくお願いします。

専門家に質問してみよう