![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
pictureBoxにマウスを動かして絵を書いて、書いた絵を保存したいんですが、書いたデータは消えてしまいます。
なんでかわからないんで教えてください。例を載せときます。
cli::array<PointF>^ poi;
Graphics^ grf;
Pen^ pen;
bool cap;
private: System::Void pictureBox1_MouseMove(System::Object^sender, System::Windows::Forms::MouseEventArgs^ e) {
if(!cap)return;
PointF pt = PointF(e->X, e->Y);
poi->SetValue(pt, 1);
grf->DrawPolygon(pen, poi);
poi->SetValue(pt, 0);
//
}
private: System::Void pictureBox1_MouseDown(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
{
if(checkBox1->Checked == true){
Color color = Color::FromArgb(hScrollBar1->Value ,hScrollBar2->Value,hScrollBar3->Value);
if(e->Button == System::Windows::Forms::MouseButtons::Right)
color = Color::Red;
cap = true;
grf= pictureBox1->CreateGraphics();
//
//
pen = gcnew Pen(color);
poi = gcnew cli::array<PointF>(2);
PointF pt = PointF(e->X, e->Y);
poi->SetValue(pt, 0);
poi->SetValue(pt, 1);
grf->DrawPolygon(pen, poi);
}
}
private: System::Void pictureBox1_MouseUp(System::Object^ sender, System::Windows::Forms::MouseEventArgs^ e)
{
cap = false;
}
No.1ベストアンサー
- 回答日時:
どのように保存したいのでしょう?
マウスでクリックした点群を列挙したファイル
アプリのクライアント(PictureBox)領域の画像ファイル
前者なら入力された点群をを記憶しておく配列が必要でしょう
後者なら、描画自体をpictureBox1->CreateGraphics()で生成したGraphicsオブジェクトではなく
PictureBoxの大きさのBitmapオブジェクトから生成したGraphicsオブジェクトに描画してPictureBoxのImageプロパティへ設定するように変更しましょう
保存のイベントで
Bitmap^ bmpObj = Bitmap( picturBox1->Image );
bmpObj->Save("ファイル名");
といった具合で保存します
このときファイル名の指定にSaveFileDialogなどを使うと便利でしょう
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C# DatagridviewにExcelシートを反映するとエラーが出る 2 2023/05/06 17:12
- C言語・C++・C# Windows Formアプリからコンソールを呼び出して文字を出力させたい 8 2023/05/09 10:53
- C言語・C++・C# 大量のデータを読み込んで表示する速度を改善したい 8 2023/05/07 13:29
- Visual Basic(VBA) エクセルVBA ダブルクリックしたら色反転を指定したセルのみにしたい 2 2022/04/06 12:52
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- ボランティア ウクライナ人からどういうこと? 6 2022/03/28 07:37
- 英語 『G19 Gen5 MOS - Modular Optic System for Gen5』 の 『 1 2023/03/05 13:37
- 英語 Modular Optic System (MOS)とは、一体どの様な物の事なのかを教えてください。 1 2023/03/03 09:52
- HTML・CSS ただいま勉強始めたての初心者です。フォームを縦並べにしたいです。 2 2022/11/20 17:18
- 工学 計器用変成器(PT/CT)を用いた電力測定方法について 2 2022/08/16 11:09
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
【エクセルのマクロ】クリップ...
-
現在アクティブになっているオ...
-
アクセスの1つのファイルにはク...
-
PictureBoxにPSetしてそれをIma...
-
エクセルのデータをwebフォーム...
-
エクセルVBAでセル番地を指定し...
-
Accessのフォーム上にエクセル...
-
Excel VBA でPictureBoxオブジ...
-
VB.NET Image型データをファイ...
-
クリスタルレポートのプレビュ...
-
日本語の文字化けを直す方法
-
Bitmap.GetPixelより高速なもの
-
アクセスのスクロールバー
-
VBAで選択範囲外の図形(オブジ...
-
ExcelのシートをAccessで表示し...
-
SQLの更新の時、記号 ’ について
-
【エクセル】複数のTextBoxに共...
-
Doevents をご教授ください。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA エンターキーでイベントに...
-
アクセスVBAのMe!と[ ]
-
文字列で小数点以下の0を削除し...
-
Excel VBAでマウスの左クリック...
-
【エクセルのマクロ】クリップ...
-
エクセルVBAでセル番地を指定し...
-
Accessのフォーム上にエクセル...
-
コードでオブジェクトを最前面に
-
日本語の文字化けを直す方法
-
現在アクティブになっているオ...
-
Imageコントロールにグラフを表...
-
Excel2007 でのチェックボック...
-
PowerpointVBAで指定のShapeオ...
-
Access からオブジェクトとして...
-
エクセルのデータをwebフォーム...
-
【エクセル】複数のTextBoxに共...
-
[C#] DataGridViewの項目名
-
カッコ付けのオブジェクト名を...
-
ExcelのシートをAccessで表示し...
-
構造体の静的な初期化
おすすめ情報