Windows XP Pro, Visual C++ .NET 2003, Windows フォーム アプリケーションでやっています。
題名の通りなのですが、
System::Drawing::Image* img;
img=System::Drawing::Image::FormFile(S"a.gif");
でImageオブジェクトに画像を取り込み、その一部の長方形を別のPictureBoxに表示させたいのですが、どうすればいいのか分かりません。
どなたか方法を知っていらっしゃる方は、教えてください。
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
> // 矩形を指定
> 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 );
です。
# メソッド多すぎで混乱する罠。
というか、
Rectangle は __valueクラスなんで
> System::Drawing::Rectangle srcRect = System::Drawing::Rectangle( 20, 20, 70, 70 );
よりも
System::Drawing::Rectangle srcRect( 20, 20, 70, 70 );
ですね。
Blueさんの方法で試してみたら、できました。
ありがとうございます。
ツイート | ![]() |