Imageオブジェクトの画像の一部からPictureBoxに貼り付けるには?

解決


ghth  2005-12-02 21:27:21  No: 59869  IP: 192.*.*.*

Windows XP Pro, Visual C++ .NET 2003, Windows フォーム アプリケーションでやっています。
題名の通りなのですが、
    System::Drawing::Image* img;
    img=System::Drawing::Image::FormFile(S"a.gif");
でImageオブジェクトに画像を取り込み、その一部の長方形を別のPictureBoxに表示させたいのですが、どうすればいいのか分かりません。
どなたか方法を知っていらっしゃる方は、教えてください。

編集 削除
Blue  2005-12-03 00:19:26  No: 59870  IP: 192.*.*.*

PictureBox の Paint イベントに描画処理を書きます。

// 矩形を指定
System::Drawing::RectangleF srcRect = System::Drawing::RectangleF( 20.0f, 20.0f, 70.0f, 70.0f );
// デバイス ピクセルを長さの単位に指定
System::Drawing::GraphicsUnit units = System::Drawing::GraphicsUnit::Pixel;
// 指定した位置にイメージの一部を描画
e->Graphics->DrawImage( img, 0, 0, srcRect, units );

MSDN
public: void DrawImage(Image*, int, int, Rectangle, GraphicsUnit);
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemdrawinggraphicsclassdrawimagetopic14.asp

編集 削除
Blue  2005-12-03 00:23:29  No: 59871  IP: 192.*.*.*

> // 矩形を指定
> System::Drawing::RectangleF srcRect = System::Drawing::RectangleF( 20.0f, 20.0f, 70.0f, 70.0f );
ここちがってました。

System::Drawing::Rectangle srcRect = System::Drawing::Rectangle( 20, 20, 70, 70 );

です。
# メソッド多すぎで混乱する罠。

編集 削除
Blue  2005-12-03 00:27:06  No: 59872  IP: 192.*.*.*

というか、
Rectangle は __valueクラスなんで
> System::Drawing::Rectangle srcRect = System::Drawing::Rectangle( 20, 20, 70, 70 );
よりも
System::Drawing::Rectangle srcRect( 20, 20, 70, 70 );
ですね。

編集 削除
ghth  2005-12-04 17:31:28  No: 59873  IP: 192.*.*.*

Blueさんの方法で試してみたら、できました。
ありがとうございます。

編集 削除