tagCANDY CGI VBレスキュー(花ちゃん)の Visual Basic 6.0用 掲示板 [ツリー表示へ]   [Home]
一括表示(VB6.0)
タイトルPictuerboxに貼り付けたBmpの印刷
記事No11985
投稿日: 2008/04/10(Thu) 15:03
投稿者しげじゅ
いつも参考にさせて頂いております。

VB6にてForm内に作成した複数のPictureboxに
Bmp画像を呼出しているのですが
之をForm毎印刷したく
PrintFormメソッドを使用して行ったのですが
Bmp画像が印刷できません。

何方かご指導のほど宜しくおねがいします。

尚Pictureboxが1つの場合は印刷することが出来ました。

[ツリー表示へ]
タイトルRe: Pictuerboxに貼り付けたBmpの印刷
記事No11986
投稿日: 2008/04/11(Fri) 07:54
投稿者花ちゃん
> いつも参考にさせて頂いております。

だったら、ここの[印刷関係]の[画像ファイルを印刷する]はご覧になっているのですよね。

[ツリー表示へ]
タイトルRe^2: Pictuerboxに貼り付けたBmpの印刷
記事No11987
投稿日: 2008/04/11(Fri) 08:48
投稿者しげじゅ
> だったら、ここの[印刷関係]の[画像ファイルを印刷する]はご覧になっているのですよね。

一応、見て試してはいたのですが、此方は画像ファイルのみの印刷に成りますよね?

希望はFormごと印刷なので 軽く試す程度しかしていなかったです。

[ツリー表示へ]
タイトルRe: Pictuerboxに貼り付けたBmpの印刷
記事No11989
投稿日: 2008/04/11(Fri) 09:53
投稿者花ちゃん
> Bmp画像が印刷できません。

Picturebox は、印刷されていて、表示している bmp 画像が印刷されないのなら

PictureBox の AutoRedraw プロパティを True に設定して試して見て下さい。

[ツリー表示へ]
タイトルRe^2: Pictuerboxに貼り付けたBmpの印刷
記事No11992
投稿日: 2008/04/11(Fri) 10:40
投稿者しげじゅ
> Picturebox は、印刷されていて、表示している bmp 画像が印刷されないのなら
> PictureBox の AutoRedraw プロパティを True に設定して試して見て下さい。

AutoRedraw プロパティを True にはしているのですが、20個あるPictuerboxのうち
1つだけが印刷できてます。(bmpとPictuerBoxとがずれてますが)
一応以下のコードで印刷を試みています。

Private Sub Command10_Click() '---印刷---
    ' CancelError プロパティを真 (True) に設定します。
    CommonDialog1.CancelError = True
    On Error GoTo ErrHandler
    'プリンタの設定ダイアログボックスを表示
    CommonDialog1.Flags = cdlPDPrintSetup
    CommonDialog1.ShowPrinter 'ダイアログボックスの表示
    
    On Error Resume Next
    
    If Err.Number Then
        Err.Clear
        Exit Sub
    End If
    
    For I = 0 To 9
      Picture1(I).AutoRedraw = True
      Picture2(I).AutoRedraw = True
'      Picture1(I).ScaleMode = vbTwips
'      Picture2(I).ScaleMode = vbTwips
'      Printer.PaintPicture Picture1(I).Image, 0, 0, Picxw3, Picyw3
'      Printer.PaintPicture Picture2(I).Image, 0, 0, Picxw3, Picyw3
    Next I
'    Printer.ScaleMode = vbTwips

    PrintForm '----画面サイズ内Formをまるごとプリント

Exit Sub

ErrHandler:

End Sub

[ツリー表示へ]
タイトルRe^3: Pictuerboxに貼り付けたBmpの印刷
記事No11994
投稿日: 2008/04/11(Fri) 11:01
投稿者花ちゃん
> > Picturebox は、印刷されていて、表示している bmp 画像が印刷されないのなら
> > PictureBox の AutoRedraw プロパティを True に設定して試して見て下さい。
>
> AutoRedraw プロパティを True にはしているのですが、20個あるPictuerboxのうち
設定するなら、画像を表示する前に設定して下さい。

> 1つだけが印刷できてます。(bmpとPictuerBoxとがずれてますが)
> 一応以下のコードで印刷を試みています。

Picturebox は、印刷されていて、表示している bmp 画像が印刷されないのでしょうか?

画面上に20個のPicturebox と画像は表示されているのでしょうか?

画面上に表示されている事を確認してから
Private Sub Command1_Click()
   PrintForm
End Sub
を実行したらどうなりますか?

>(bmpとPictuerBoxとがずれてますが)
どのような状態なのか解りません。どこがどのようにずれているのでしょうか?
画像は、どこで読み込んでいるのでしょうか?
テスト中はエラー処理はコメントにしておいて下さい。
(エラー 486 または 482 が発生しているとかはないでしょうね)


VB のバージョンとサービスパックの状況を教えて下さい。

[ツリー表示へ]
タイトルRe^4: Pictuerboxに貼り付けたBmpの印刷
記事No11999
投稿日: 2008/04/11(Fri) 12:06
投稿者しげじゅ
花ちゃん様

早速のご返信ありがとうございます。

> Picturebox は、印刷されていて、表示している bmp 画像が印刷されないのでしょうか?
> 画面上に20個のPicturebox と画像は表示されているのでしょうか?
画面上にはPictuerboxもBMPも正常に20個表示された状態で
印刷した場合はPictuerboxは印刷されますがBPMはされません。


> 画面上に表示されている事を確認してから
> Private Sub Command1_Click()
>    PrintForm
> End Sub
> を実行したらどうなりますか?

事前に呼出したBMPを、確認後別のイベントで印刷しています。
又上記の通りに試してみましたが、結果は同じでした。


> >(bmpとPictuerBoxとがずれてますが)
> どのような状態なのか解りません。どこがどのようにずれているのでしょうか?
Pictuerbox内でBMPがずれています。
BMPの座標0,0がPictuerboxの座標でx、yともマイナス方向に
ズレた感じになっています。


> 画像は、どこで読み込んでいるのでしょうか?
添付したコードには含まれていない他のイベントで読み込んでいます。
以下に添付いたします。(余計なコード削除しましたが残っていた場合すみません)

Private Sub LoadImage1_Click()
    
    On Error GoTo Error00

    Tim01 = Timer

    For I = 0 To 9
      Picture1(I).Cls: Picture2(I).Cls
    Next I
    
    Cnt1 = ListCnt - 1'表示Bmp数、ナンバー
    
    H = Val(Parge.Text * 10)
    
    K = 0
    For I = Cnt1 - H To 0 Step -1
    
      If K = 10 Then Exit For
      Ng_Nam = Form2.List1.List(I)

      N = Len(Lfname)
      Nam1 = "\\Ljs-ts-03\DESK01\画像保存\"
      Nam1 = Nam1 + Mid(Lan_nam, 3, 8) + "\" + Mid(Lfname, 18, 5) + Mid(Lfname, 27, N - 26) + "\" + Ng_Nam + ".bmp" '----呼び出しファイル作成

      Set Objpic(0) = LoadPicture(Nam1)
      Picture1(K).PaintPicture Objpic(0), 0, 0, Picxw3, Picyw3
      Text1(K).Text = Ng_Nam
      
      If Fr = 0 Then
        Nam2 = Rfname + "\" + Ng_Nam + ".bmp"
        Set Objpic(0) = LoadPicture(Nam2)
        Picture2(K).PaintPicture Objpic(0), 0, 0, Picxw3, Picyw3
        Text2(K).Text = Ng_Nam
      End If
      
      K = K + 1
      
    Next I
    
    K = 10
    
    If Fr = 1 Then Form13.Line1.Visible = False:  LoadImage2_Click Else Form13.Line1.Visible = True
    
    Tim02 = Timer
    Debug.Print Tim02 - Tim01

Exit Sub

Error00:

    MsgBox "該当するファイルが見つかりませんでした。", 64
    
'    Unload Me
    Form2.ImageListCom.Enabled = False
    
End Sub


> テスト中はエラー処理はコメントにしておいて下さい。
勉強不足すいません。

> (エラー 486 または 482 が発生しているとかはないでしょうね)
エラーは発生していないようです。

> VB のバージョンとサービスパックの状況を教えて下さい。
VB6 sp6 を使用してWindows XP Proで作成しています。

以上よろしくお願いします。

[ツリー表示へ]
タイトルRe^5: Pictuerboxに貼り付けたBmpの印刷
記事No12000
投稿日: 2008/04/11(Fri) 12:45
投稿者花ちゃん
> > 画面上に20個のPicturebox と画像は表示されているのでしょうか?
> 画面上にはPictuerboxもBMPも正常に20個表示された状態で
> 印刷した場合はPictuerboxは印刷されますがBPMはされません。

だったら、AutoRedraw プロパティ が False に設定された状態で描画しているのでは。

> > >(bmpとPictuerBoxとがずれてますが)
> > どのような状態なのか解りません。どこがどのようにずれているのでしょうか?
> Pictuerbox内でBMPがずれています。
> BMPの座標0,0がPictuerboxの座標でx、yともマイナス方向に
> ズレた感じになっています。

Pictuerbox が 3D 表示になっていませんか? フラットスタイルにしたらどうなりますか?


>       Set Objpic(0) = LoadPicture(Nam1)

この時点の AutoRedraw プロパティ はどのようになっていますか?
デザイン時にプロパティで直接 True に設定して試して見てください。

>       Picture1(K).PaintPicture Objpic(0), 0, 0, Picxw3, Picyw3

[ツリー表示へ]
タイトルRe^6: Pictuerboxに貼り付けたBmpの印刷
記事No12002
投稿日: 2008/04/11(Fri) 13:37
投稿者しげじゅ
花ちゃん様 

何度も申し訳ありません。

Pictuerboxはデザイン時に全てAutoRedraw=Tueとしてます。
(デザイン時にと言う表現が解らなくて説明できませんでした、すいません。)

又3D⇒フラットに変更してみたのですが此方も変わらずでした。

20個のBMPはPictuerboxに合わせて縮小しているのですが
Pictuerboxを1つで等倍のまま呼出し印刷を行った場合は
旨くいきました。
徐々に以前の状態に近づけ何処でおかしくなるのか
試してみようかと思います。

[ツリー表示へ]
タイトルRe: Pictuerboxに貼り付けたBmpの印刷
記事No12003
投稿日: 2008/04/11(Fri) 15:40
投稿者K.J.K.
# 全角・半角文字の使い分けは適切に。

> PrintFormメソッドを使用して行ったのですが
> Bmp画像が印刷できません。

PrintFormメソッドには、PictureBoxやFrameで適切に印刷されない問題が
あったような気がします。WM_PRINT絡みで調べてみるといいでしょう。

で、そもそもは、PrintFormにそんな期待をかけてはいけません。
印刷するのであれば、それぞれのコンポーネントの内容ごとに
印刷するコードを自分で記述するべきです。

[ツリー表示へ]
タイトルRe^2: Pictuerboxに貼り付けたBmpの印刷
記事No12005
投稿日: 2008/04/11(Fri) 16:45
投稿者しげじゅ

K.J.K様

 ありがとうございます。
 もともとPrintFormでは行えない内容だったのですね。

 色々勉強になりました。

 印刷するコードについて調べてみる事にします。

 花ちゃん様・K.J.K様 ありがとうございました。 

[ツリー表示へ]