• ベストアンサー

ラベルコントロール・ラインコントロール などを使用して書いたものを画像に保存するにはどうすればいいんでしょうか

CSVのデータを元に、複数のラベルコントロールやラインコントロールで (タイムラインのような表のため) フォームにいろいろなデータを表のように書き込んで、印刷/画像として 出力をするようなプログラムを作っているのですが、 どのようにすれば画像として保存できるのかよくわかりません。 MDIフォームの子のフォーム丸ごとを画像として出力するというような 方法でもいいので、教えてください。

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

  • ベストアンサー
  • TAGOSAKU7
  • ベストアンサー率65% (276/422)
回答No.3

[PrintScreen]ボタンは画面全体のスナップショット [Alt]+[PrintScreen]はアクティブ画面などのスナップショットです。 子フォームだけのスナップショットは、キー操作だけでは標準では無理ですね。。。 サンプルです。 手順としては 1.子フォームとなっているフォーム1が、デスクトップ上のどの位置に存在するか座標を得る 2.画像作成用のピクチャボックスをその領域座標とおなじ大きさになるように、大きさをセットする 3.デスクトップ領域のフォーム1の座標部分を、ピクチャボックスに描画 4.保存 というのが大きな流れです。 必要なもの MDIForm1 Form1(デザイン時にMDIChild=True) ├コマンドボタン └ピクチャボックス -----Form1ここから----- Option Explicit Private Type RECT   Left As Long   Top As Long   Right As Long   Bottom As Long End Type Private Type POINTAPI   x As Long   y As Long End Type Private Declare Function GetWindowRect Lib "user32" (ByVal hwnd As Long, lpRect As RECT) As Long Private Declare Function MoveWindow Lib "user32" (ByVal hwnd As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal bRepaint As Long) As Long Private Declare Function GetDesktopWindow Lib "user32" () As Long Private Declare Function GetDC Lib "user32" (ByVal hwnd As Long) As Long Private Declare Function ReleaseDC Lib "user32" (ByVal hwnd As Long, ByVal hdc As Long) As Long Private Declare Function StretchBlt Lib "gdi32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hSrcDC As Long, ByVal xSrc As Long, ByVal ySrc As Long, ByVal nSrcWidth As Long, ByVal nSrcHeight As Long, ByVal dwRop As Long) As Long Private Sub Command1_Click()   Dim recWork As RECT   Dim lngL As Long, lngT As Long, lngW As Long, lngH As Long   Dim lngDeskTopWnd  As Long 'デスクトップハンドル   Dim lngDescTooDC  As Long 'デスクトップデバイスコンテキストハンドル      With Me     'フォームの座標を得る     Call GetWindowRect(.hwnd, recWork)          '左位置、上位置。幅、高さを得る     With recWork       lngL = .Left: lngT = .Top: lngW = .Right - lngL: lngH = .Bottom - lngT     End With          'ピクチャボックスのサイズ設定(左位置=0:上位置=0幅=lngW:高さ=lngH)     Call MoveWindow(.Picture1.hwnd, 0, 0, lngW, lngH, 1)          'デスクトップハンドルを得る     lngDeskTopWnd = GetDesktopWindow     'デスクトップのデバイスコンテキストハンドルを得る     lngDescTooDC = GetDC(lngDeskTopWnd)          'デスクトップ上のlngL:lngT:lngW:lngHの範囲を、ピクチャボックスに描画     'lngL:lngT:lngW:lngHにはフォーム1が存在しているので、実質フォーム1を描画することになる     Call StretchBlt(.Picture1.hdc, 0, 0, lngW, lngH, lngDescTooDC, lngL, lngT, lngW, lngH, vbSrcCopy)          'デバイスコンテキストをリリースする     Call ReleaseDC(lngDeskTopWnd, lngDescTooDC)               '画像を保存     Call SavePicture(.Picture1.Image, "c:\test.bmp")   End With End Sub Private Sub Form_Load()   With Me     With .Picture1       .Appearance = 1   'フラット       .BorderStyle = 0  '枠線なし       .AutoRedraw = True '自動再描画       .Visible = False     End With   End With End Sub -----Form1ここまで----- -----MDIForm1ここから----- Option Explicit Private Sub MDIForm_Load()   Form1.Show End Sub -----MDIForm1ここまで-----

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=185224
tomohiro_3
質問者

お礼

ちょっとお礼が遅くなりましたが、ありがとうございます。 APIを扱うのは初めてなので、自分の思い通りに扱えるようにするには 時間がかかりそうですが、今月中になんとか出来ればいいので、 専門書を読んで、一つづつ命令の意味を理解しながらやっていきたいと思います。

その他の回答 (2)

  • Yackn
  • ベストアンサー率42% (12/28)
回答No.2

センドキーでプリントスクリーンは効かないんで困るんですよねぇ。仕様でしょうか。 印刷は Me.PrintForm で何とかなるにしてもファイル保存はたいへんですね。 もし、他社ツールOKであるならば明熊さん(下記URL)のtransG32なんかを利用してみてはどうでしょう?直接ウィンドウハンドル送ってやればうまくいくと思いますよ。 他にはAPIをたたいてあげるしかないとおもいます。

参考URL:
http://www.akikuma.cx/Download.htm
  • nikorin
  • ベストアンサー率24% (47/191)
回答No.1

[alt]+[print screen]でウィンドウの画像コピーして、ワード、エクセルや ペイントに貼り付けではだめですか?

関連するQ&A

  • CDラベル作成の時スキャンした画像をCD一杯に大きくしてラベルを作りたい

    HPプリンターでCDの画像(表の印刷面)をスキャンしてCD作成した物に同じ画像でラベルを作成したいのですが。 印刷は筆まめを使ってます。ダイレクト印刷が出来ないのでCDラベルを使っています。 picturemanagerにスキャン保存したのですが、画像をCDラベルの大きさに引き伸ばせません。 筆まめのラベル作成の時はイラストの中に画像を入れてイラストの枠を大きくすれば画像も大きくなるのですが、このスキャン保存された物は一枚の紙の上にラベルが印刷された状態のようになっているので、画像だけの拡大が出来ません。 スキャン元のCDと同じでCDラベルを作る方法をお願いします

  • ラベルの透過について

    環境 VS2010 C# .net framework4.0 Windowsアプリケーション MDI 親フォームのbackcolorを指定して、 ラベルの透過処理を下記の様に記述するとラベル部分だけちょっと濃い灰色(?)になってしまいます。(添付画像参照) label1.BackColor = System.Drawing.Color.Transparent; ラベルもピンク色になってほしいのですがうまくいきません。 ラベルのbackcolorもフォームと同色にすれば良い話ですが、 backgroundimageを貼り付けたいので、絶対に透過が必要になります。 IsMdiContainer = true;と記述し親フォームに指定すると現象が起こり、 IsMdiContainer = falseだと正常に透過します。 IsMdiContainerもtrueでなければなりません。 改善方法と、この現象が起こる原理を教えていただけたら幸いです。 宜しくお願いします。

  • ラベル作成ソフトについて教えて下さい!!

    ラベル作成ソフトについてですが、パソコンでラベルを作成して印刷するのではなくて、画像としてホームページなどで使うことは可能なのでしょうか?(画像として出力することはできるのか) また、「できる」としたら、欠点などあれば教えていただけるとありがたいです。 よろしくお願いします。

  • LINEのデータ保存について

    LINEのデータを全て(音声データ、画像データなども)をまるごと保存したいのですが、ベストな方法をご教示ください。 ※アイフォンを使用してるのですが、iCloudに保存するだけでいいのか等とよくわかっておりません。

  • ワード2010宛名ラベルシートについて

    ワード2010にて エクセルデータでの表を差し込みフィールドを使って 宛名ラベルシートを作成しました。 200名程の人数なのですが、何度試してもワード画面上では一枚目の表示しかできません。 印刷すると全てのラベルが印字されるようなのですが 業務でデータとして送るため、ワード上で200名分、複数枚のラベル表示がしたいのです。 お分かりになる方 いらっしゃったら教えていただけますか?

  • AWTの背景透過ラベルコントロールについて

    Javaのプログラムについての質問です。 現在Javaアプレットで背景に指定した画像を表示する 時計みたいなものを作っているのですが、時刻の表示に AWTのラベルコントロールを使用していますが、表示すると 時刻部分が透過されず灰色の背景になります。 これを透過するラベルにするには拡張すれば出来るそうですが どんなコードを書けば良いのか分かりません。(Javaは全然 書いたことがないので) もし分かる方教えていただけないでしょうか。

    • ベストアンサー
    • Java
  • DMに貼るラベルについて

    DM(ダイレクトメール)に貼るラベル(住所・氏名)についてですが、 顧客情報をリストにして一括でデータ管理し、自分で印刷(市販の印刷用ラベル用紙)したいのですが、 (1)有料、無料問わず、良いソフトはありますか?(データ管理した顧客情報をラベル用紙に対応したフォーマットで出力できる) (2)そのソフトに対応した用紙(セット?)のものがあるともっといいです。 よろしくお願いします。

  • ラベル印刷

    エクセル2003を使用しています。 エクセルで住所録をラベル印刷出来るようにしています。 ラベル印刷を行った際に、住所情報がないラベルにも「〒」の表示がでて、次回の印刷に使用できなくなるので、もったいないため、「〒」の表示を、参照する住所録データがない際には消したいのです。 sheet1 に 住所録データ        A列に郵便番号000-0000 sheet2 に ラベルのテンプレート      関数 =INDIRECT("〒"&"sheet1!A1") を作成しています。 住所録データは、毎回別のCSVファイルからインポートしているので、sheet2上で関数を使って、sheet1、A列の参照行が空白の時は、「〒」を表示させなくしたいのです。 どうか関数式を教えてください。よろしくお願いいたします。

  • エクセルで画像のラベル印刷をしたい

    エクセル2000です。仕事で使うITFコードと言うのを”mibarcode”というソフトで作成してエクセルに貼り付けて一覧表を作りました。それをラベルソフトに貼り付けて印刷しようとしましたがうまく認識されません。そこでシート1をA4の大きさで3×7の21ますにセルの大きさをそろえ、ラベルと同じ大きさにしました。A1からG3まで同じバーコードをコピー&ペーストして綺麗に印刷することは出来ました。ここからが分からないのですが、A1のセルにだけ貼り付けると同時にG3まで同じものが貼り付けられる方法はありますか?ちなみに今の画像は拡張メタファイルです。

  • ラベル印刷のソフトを探しています!

    ラベル用のシートがあるので、これを使ってラベル印刷をしたいと考えています。 条件にあうソフトがなくて、困っています。 下記の条件で印刷出来るソフトがあればご紹介ください。 1.無料のソフト 2.A4、8面カットの用紙(シート)が使用できる。 3.CSVファイルから、データを読み込んで一括で印刷をかけられる。 以上です。 ちなみに用紙は、会社名が書いてないので、どこの会社のものか分かりません。 よろしくお願いします。

専門家に質問してみよう