C++_PictureBox.Image に代入しスクロールをすると赤バツ の続き

C++ でもらった Bitmap^ を PictureBox.Image に代入しスクロールをすると赤バツ の続き。

 

cv::Ptr<IplImage> ipImag が、
System::Drawing::Bitmap^ bmp = gcnew の時は生きているが
スコープ抜けると解放されるのが原因。多分。
浅いコピーだろうから深いコピーにしたかった。

 

是非は度外視して、下記のコードで問題なく表示できた。

    cv::Ptr<IplImage> IpImag = cvLoadImage( 略
    System::Drawing::Bitmap^ bmp = gcnew System:: 略
    System::Drawing::Bitmap^ bmp2 = gcnew System::Drawing::Bitmap(bmp);
    return bmp2;

return bmp1; だとメモリ書き込みエラー。

 

 

--Memo--
メモリからメモリへのコピーする関数が memcpy 。深いコピーできるらしい。
だがこれは、構造体にポインタがあると浅いコピーになる。

こちらから。
http://azurine.pupu.jp/blog/?p=246
http://ochi-lab.blogspot.com/2010/07/ccliopencvbitmapiplimage.html
https://ja.cppreference.com/w/cpp/string/byte/memcpy

以上。