dポイントプレゼントキャンペーン実施中!

C#の課題で画像のトリミング処理を行いたいのですが、
どういった処理を行えばいいのか分かりません。

ネットでもいろいろ調べてみたのですが、
Picturebox上に表示させる画像のトリミング方法は見つかっても、
画像そのものにトリミング処理を行う方法は載っていませんでした。

上記のソースを参考にして、
Pictureboxをプリントスクリーンで撮って保存するやり方も試してみたのですが、Pictureboxよりも大きな画像(パソコンの解像度ぎりぎり)の処理で上手くいきません。


C#のソースプログラムでは
画像そのものに直接手を加える形でのトリミング処理は出来ないのでしょうか?

A 回答 (1件)

 こんばんは。


 元画像のトリミング領域を元に、トリミングされた画像を作り出して、ピクチャボックスに設定するといった具合ではないでしょうか。
 例えば、元画像が640x480で、(320, 240, 100, 100)の領域を切り取りたければ、新しい画像を100x100で作成して、元画像の領域(320, 240, 100, 100)を、新しい画像の領域(0, 0, 100, 100)に向かって複写します。
 以後、新しい画像の方をピクチャボックスに設定します。
 以下ではディスプレイのスクリーンショットを撮って、(320, 240, 100, 100)の領域を切り抜きます。参考程度で。

private void Form1_Load(object sender, EventArgs e)
{
//スクリーンショット用の画像を作成(元となる絵、ファイルから読み込んで来ても良い)
Bitmap screenShot =
new Bitmap(Screen.PrimaryScreen.Bounds.Width,
Screen.PrimaryScreen.Bounds.Height,
System.Drawing.Imaging.PixelFormat.Format32bppRgb);

//スクリーンショットを撮る
Graphics gfxScreen = Graphics.FromImage(screenShot);
gfxScreen.CopyFromScreen(0, 0, 0, 0, Screen.PrimaryScreen.Bounds.Size, CopyPixelOperation.SourceCopy);
gfxScreen.Dispose();

//トリミング画像を作成
Bitmap trim = new Bitmap(100, 100, System.Drawing.Imaging.PixelFormat.Format32bppRgb);
Graphics gfxTrim = Graphics.FromImage(trim);

//スクリーンショットの領域(320, 240, 100, 100)をトリミング画像の領域(0, 0, 100, 100)に複写
gfxTrim.DrawImage(screenShot, 0, 0, new Rectangle(320, 240, trim.Width, trim.Height), System.Drawing.GraphicsUnit.Pixel);
gfxTrim.Dispose();

//トリミング画像をピクチャボックスに設定する
this.pictureBox1.Image = trim;
this.pictureBox1.Invalidate();
}
    • good
    • 1
この回答へのお礼

遅くなりまして大変申し訳ございません。

いただいたデータを参考になんとかほしい形で図形のトリミングが出来るようになりました。

画像処理に関するソースは検索してもあまりヒットしないので、本当に助かりました。ありがとうございます。

お礼日時:2010/01/05 14:32

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