フォームを画像として保存するには?

解決


シンヤ  2004-06-25 01:21:28  No: 114230

お世話になっております。

表記のとおり、ある処理が終了するたびに
フォームを画像として保存したいのですが、
やり方が分かりません。
.PrintFormを使うとプリンターに出力できる
みたいなんですが、プリンター出力ではなく、
画像ファイルとして保存したいのです。
ファイルの形式はなんでもいいです。

どなたか分かる方がいらっしゃいましたら
よろしくお願いします。


S.S  2004-06-25 02:11:51  No: 114231

プリントスクリーンでクリップボードにコピーして、BMPファイルで保存してはいかがでしょう?


シンヤ  2004-06-25 02:24:41  No: 114232

手順は全くそのとおりなんですが、
プログラムの中からその作業を行うことは可能でしょうか?
方法を知ってましたら教えてください。


S.S  2004-06-25 02:53:07  No: 114233

ちょっと手元に資料が無いんで適当な方法ですがw

SendKeys "+{PRTSC}" 'プリントスクリーンを実行
DoEvents 'いらないかも?

'画面にピクチャーボックスを貼り付けてください。
'全画面に貼り付けるのが面倒ならば何かフォームを作って、そこに貼り付け
'終了のタイミングでLoadしてください。非表示でもかまわないと思います。
'それでそのピクチャーボックスに画像(クリップボードより)を表示
PictureBox1.Image = Clipboard.GetDataObject.GetData(DataFormats.Bitmap)

あとはその画像を保存するだけです。保存の仕方はHelp参照でお願いします(^^
それと、試してません。。。


S.S  2004-06-25 02:53:56  No: 114234

すみません、ちょっと.Netの記述が混じってるかも・・・


nanashi  2004-06-25 03:02:42  No: 114235

APIのkeybd_eventでキーストロークをシミュレートすれば出来ます。
SendKeysでは出来ないと思います。

Private Declare Sub keybd_event Lib _
    "user32.dll" _
    (ByVal bVk As Byte, ByVal bScan As Byte, _
     ByVal dwFlags As Long, ByVal dwExtraInfo As Long)

Private Const VK_SNAPSHOT As Long = &H2C&
Private Const KEYEVENTF_KEYUP As Long = &H2&

Private Sub Command1_Click()
    Dim lScanCode As Long
    
    lScanCode = 1 'Win9x : 0, WinNT : 1
    
    Clipboard.Clear
    Call keybd_event(VK_SNAPSHOT, lScanCode, 0, 0)
    Call keybd_event(VK_SNAPSHOT, lScanCode, KEYEVENTF_KEYUP, 0)
    
    DoEvents
    
    Call SavePicture(Clipboard.GetData(vbCFBitmap), "C:\test.bmp")
End Sub


シンヤ  2004-06-25 03:51:07  No: 114236

出来ました!!

お二人とも、有難うございました。
無事、画像として保存することが出来ました。

お世話になります。


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加