tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルvb6でPictureBoxの印刷
記事No14939
投稿日: 2010/09/26(Sun) 13:55
投稿者オールドルーキー
お世話になります。

趣味・初心者レベルでVB6にてloto6の予想プログラムを作成しているのですが、
スキャナーで取り込んだloto6カード画像をPictureBoxのpictureに設定し
予想した番号に沿ってそのPictureBox画像にマークするようにしたのですが、
マークされた部分だけを印刷する方法が分かりません。

PictureBox画像にマークする方法は以下の方法です。
@PictureBox内にコントロールを配置
  PictureBox内にコントロール(shape)を全てのマーク分用意して、
  Visible=FALSEをデフォルトにして該当コントロールをTRUEにする方法
APictureBox内lineで描画

もともとは@の方法で処理していたのですが印刷のところで躓いてしまいましたので
Aの処理に変更し以下のようにしましたがPictureBoxのpictureの画像しか印刷できませんでした。
Printer.PaintPicture Picture1, 0, 0
Printer.EndDoc

色々サイト検索等して試行錯誤しているのですがなかなかうまくいきません。
ご教授お願い致します。

[ツリー表示へ]
タイトルRe: vb6でPictureBoxの印刷
記事No14940
投稿日: 2010/09/26(Sun) 15:15
投稿者魔界の仮面弁士
> Printer.PaintPicture Picture1, 0, 0
第一引数に PictureBox を指定してはいけません。

PictureBox を描画するのではなく、
PictureBox の画像を描画するという点に注意してください。


ヒント。下記を実行してみてください。

' フォーム上に、4 つのコントロールを貼っておきます。
'   PictureBox ×1 (Picture1)
'   Image ×3 (Image1、Image2、Image3)
' プロパティ等は初期値のままで構いません。

Private Sub Form_Load()
    Picture1.AutoRedraw = True
    Picture1.BackColor = vbYellow
    Set Picture1.Picture = Me.Icon
    Picture1.ForeColor = vbRed
    Picture1.Print "弁士"

    Image1.BorderStyle = vbBSSolid
    Image2.BorderStyle = vbBSSolid
    Image3.BorderStyle = vbBSSolid

    Set Image1.Picture = Picture1.Picture  'Picture プロパティ
    Set Image2.Picture = Picture1.Image    'Image プロパティ
    Set Image3.Picture = Picture1          'プロパティ省略
End Sub

[ツリー表示へ]
タイトルRe^2: vb6でPictureBoxの印刷
記事No14941
投稿日: 2010/09/26(Sun) 16:33
投稿者オールドルーキー
魔界の仮面弁士様

早々のご返答ありがとう御座います。
以下のコードのようにしましたらPictureBoxのpictureとlineでマークしたものが
印刷できました。

Printer.PaintPicture Picture1.Image, 0, 0
Printer.EndDoc


ここでPictureBox.pictureの画像は印刷しないでlineで描画したもののみを印刷したいと
思い色々やっているのですがうまくいきません。
Set Picture1.Pictureでセットした画像をなしにすればいいのかとおもい

Set Picture1.Picture = Nothing

としたのですが、するとpictureだけでなくlineで描画したものまで全てがなくなります。
この場合、PictureBox.pictureで設定した画像をなくすようにする方法は出来るのでしょうか
それともそもそも考え方が間違っているのでしょうか。
お手数お掛けしますがまたご教授お願い致します。

[ツリー表示へ]
タイトルRe^3: vb6でPictureBoxの印刷
記事No14942
投稿日: 2010/09/26(Sun) 16:52
投稿者オールドルーキー
とりあえず以下の方法でやりたい動作は出来ました。

picture2.Visible = false
Set Picture1.Picture = Me.Icon
Picture1.Line (1510, 10)-(1540, 3300), RGB(0, 0, 0), B
Picture2.Line (1510, 10)-(1540, 3300), RGB(0, 0, 0), B
Printer.PaintPicture Picture2.Image, 0, 0
Printer.EndDoc

別の画面表示しない作業用PictureBoxを用意してそちらにも同じように描画して
こちらのデータを印刷するようにしました。
一様出来はしたのですがもっと一般的な方法とかはあるのでしょうか。

[ツリー表示へ]