電子書籍の厳選無料作品が豊富!

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;
}

A 回答 (1件)

どのように保存したいのでしょう?


マウスでクリックした点群を列挙したファイル
アプリのクライアント(PictureBox)領域の画像ファイル

前者なら入力された点群をを記憶しておく配列が必要でしょう
後者なら、描画自体をpictureBox1->CreateGraphics()で生成したGraphicsオブジェクトではなく
PictureBoxの大きさのBitmapオブジェクトから生成したGraphicsオブジェクトに描画してPictureBoxのImageプロパティへ設定するように変更しましょう
保存のイベントで
Bitmap^ bmpObj = Bitmap( picturBox1->Image );
bmpObj->Save("ファイル名");
といった具合で保存します
このときファイル名の指定にSaveFileDialogなどを使うと便利でしょう
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!