No.2ベストアンサー
- 回答日時:
まず最初に訂正です。
Clipboard::SetData("Bitmap",this->pictureBox1->Image);
でも良いのですが、
Clipboard::SetDataObject( this->pictureBox1->Image );
でも良かったみたいです。
で、pictureBox1(グラフを描画した方)のイメージを貼り付けできない理由ですが、
Graphics ^g = this->pictureBox1->CreateGraphics();
を使用して描画した内容は pictureBox1->Image には反映されないので、pictureBox1->Image が空になっているためだと思います。
これについては
http://dobon.net/vb/dotnet/graphics/pictureboxim …
なんかが参考になると思います。
上のリンク先では
・PictureBoxのImageプロパティを一切使用しない。
・PictureBoxのGraphicsオブジェクト(PictureBox.PaintイベントとPictureBox.CreateGraphicsメソッド)を一切使用しない。
のどちらかにしなければならない、ということが書かれていますが、それは .NET に限った話であって、API を使用すれば問題ありません。
次のようにするとの内容
Graphics ^g = this->pictureBox1->CreateGraphics();
を使用して描画した内容もクリップボードにコピーすることができます。
// stdafx.h
#include <windows.h>
#pragma comment( lib, "user32.lib" )
#pragma comment( lib, "gdi32.lib" )
// フォームのコード
HWND hwnd = (HWND)pictureBox1->Handle.ToInt32();
HDC hdcSrc = GetDC( hwnd );
Bitmap ^bmp = gcnew Bitmap( pictureBox1->Width, pictureBox1->Height );
Graphics ^g = Graphics::FromImage( bmp );
HDC hdcDst = (HDC)g->GetHdc().ToInt32();
BitBlt( hdcDst, 0, 0, pictureBox1->Width, pictureBox1->Height, hdcSrc, 0, 0, SRCCOPY );
IntPtr p = IntPtr(hdcDst);
g->ReleaseHdc(p);
ReleaseDC( hwnd, hdcSrc );
Clipboard::SetDataObject( bmp );
IntPtr を HWND や HDC にキャストしようとするとエラーになってしまったので、ToInt32() を使用しています。が、64bit アプリケーションの場合は ToInt64 に変更する必要があると思います。
ご丁寧な回答ありがとうございます。
無事に欲しい機能を実現することができました。
リンク先の内容もまだ完全に理解できていませんが,
勉強のために,いろいろ試したいと思います。
No.1
- 回答日時:
SetDataObject ではなく SetData でしたら
Clipboard::SetData("Bitmap",this->pictureBox1->Image);
でできますけど。
ご回答ありがとうございます。
さっそく試してみました。
質問時に説明していませんでしたが,
pictureBox1にはグラフを描画し,
picturebox2にはUSBカメラからの画像を表示しています。
pictureBox2の画像はクリップボードにコピーして,Excelなどに貼り付け出来ましたが,なぜか,pictureBox1は出来ません。(Excelに貼り付けようとすると,『データを貼り付けできません』とエラーがでてしまいます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
- Windows 10 クリップボードからペイント? 2 2022/09/15 10:01
- Excel(エクセル) エクセルのマクロについて教えてください。 3 2023/02/07 14:47
- HTML・CSS 画像が分割されて切り替わる、ループアニメーションが作りたい 7 2023/05/27 17:12
- Windows 10 windows 10の操作で 質問です 3 2023/05/11 11:13
- スーパー・コンビニ 今日、 セブンイレブンで自分で作成した画像をA4でネップリ 他の方のネップリをハガキでコピーしました 2 2022/10/11 15:05
- Visual Basic(VBA) マクロで最終行を取得したい 4 2023/05/28 12:14
- 画像編集・動画編集・音楽編集 WIN10で「切り取り&スケッチ」が上手く使えません。 1 2022/09/01 22:56
- Excel(エクセル) 1つのファイルを3つのフォルダにファイル名を【明日の日付】にして、コピーをしたい 2 2022/12/21 17:43
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C# DrawImage 物理サイズでな...
-
for文の実行速度を遅くしたいの...
-
C++/CLIを用いて画像をクリップ...
-
エクセルのレーダーチャート 0...
-
scilabでのグラフ描画時の軸設定
-
色を合成するには
-
ListBoxで改行したい
-
VB .net Form_Load時、または関...
-
C#を用いて描画する四角形の角...
-
タスクトレイのアイコンが消える
-
c言語 ちらつき
-
Win32APIで困っています
-
実行時エラー 438になった時の...
-
VBA シートのボタン名を変更し...
-
eclipseのデバッグ中に変数の値...
-
worksheetFunctionクラスのVloo...
-
「Columns("A:C")」の列文字を...
-
パソコンへの「Dropbox...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームを表示中にシ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ListBoxで改行したい
-
for文の実行速度を遅くしたいの...
-
給紙トレイをダイアログを使わ...
-
円の頂点の求め方を知りたいです。
-
C#を用いて描画する四角形の角...
-
VB.netで図形描画ができません^^;
-
c言語 ちらつき
-
Word 描画オブジェクトを削除...
-
ビットマップに描画をしてピク...
-
win32api複数のタイマーを同時...
-
PowerPoint の VBA
-
VB.NETでグラフィックを描くと...
-
C#で壁の当たり判定と自キャラ...
-
MFCでのコンボボックスについて
-
VB 6.0 PictureBox のプロパテ...
-
VC;;6.0のMFCで線を簡単に引け...
-
C#でPictureBox内での図形移動...
-
線の描画速度
-
画面に絵を出す方法
-
C# DrawImage 物理サイズでな...
おすすめ情報