2012-11-29 9 views
9

可能性の重複をイメージカット:
Image splitting into 9 pieces9個にC#

私は十分にグーグルが、残念ながら助けを見つけることができませんでしたけど。このCode Project Tutorialも実際に必要なものを私に提供することはできませんでした。

私はImageと9個のPictureBoxをWinFormに持っています。ここで

Image img = Image.FromFile("media\\a.png"); // a.png has 312X312 width and height 
//   some code help, to get 
//   img1, img2, img3, img4, img5, img6, img7, img8, img9 
//   having equal width and height 
//   then... 
pictureBox1.Image = img1; 
pictureBox2.Image = img2; 
pictureBox3.Image = img3; 
pictureBox4.Image = img4; 
pictureBox5.Image = img5; 
pictureBox6.Image = img6; 
pictureBox7.Image = img7; 
pictureBox8.Image = img8; 
pictureBox9.Image = img9; 

はあなたのための一例イメージです:

enter image description here

これは私の絵パズルクラスのプロジェクトの一部です。私はPhotoshopの画像でやったことがある、今は動的にカットしたい。

ありがとうございます。

答えて

13

まず第一に、代わりにIMG1、IMG2を使用するのでは...そして、それは、このようなループのカップル使用して、これを行うためにはるかに簡単だ9の大きさを持つ配列を使用します。次に

var imgarray = new Image[9]; 
var img = Image.FromFile("media\\a.png"); 
for(int i = 0; i < 3; i++){ 
    for(int j = 0; j < 3; j++){ 
    var index = i*3+j; 
    imgarray[index] = new Bitmap(104,104); 
    var graphics = Graphics.FromImage(imgarray[index]); 
    graphics.DrawImage(img, new Rectangle(0,0,104,104), new Rectangle(i*104, j*104,104,104), GraphicsUnit.Pixel); 
    graphics.Dispose(); 
    } 
} 

をあなたがすることができます

pictureBox1.Image = imgarray[0]; 
pictureBox2.Image = imgarray[1]; 
... 
7

このコードで試してみることができます。基本的には、(あなたのプロジェクトに必要なような)画像のマトリックスを作成し、大きな画像の各部分に適切な部分を描画します。 pictureBoxesと同じ概念を使用して、それらを行列に入れます。

Image img = Image.FromFile("media\\a.png"); // a.png has 312X312 width and height 
int widthThird = (int)((double)img.Width/3.0 + 0.5); 
int heightThird = (int)((double)img.Height/3.0 + 0.5); 
Bitmap[,] bmps = new Bitmap[3,3]; 
for (int i = 0; i < 3; i++) 
    for (int j = 0; j < 3; j++) 
    { 
     bmps[i, j] = new Bitmap(widthThird, heightThird); 
     Graphics g = Graphics.FromImage(bmps[i, j]); 
     g.DrawImage(img, new Rectangle(0, 0, widthThird, heightThird), new Rectangle(j * widthThird, i * heightThird, widthThird, heightThird), GraphicsUnit.Pixel); 
     g.Dispose(); 
    } 
pictureBox1.Image = bmps[0, 0]; 
pictureBox2.Image = bmps[0, 1]; 
pictureBox3.Image = bmps[0, 2]; 
pictureBox4.Image = bmps[1, 0]; 
pictureBox5.Image = bmps[1, 1]; 
pictureBox6.Image = bmps[1, 2]; 
pictureBox7.Image = bmps[2, 0]; 
pictureBox8.Image = bmps[2, 1]; 
pictureBox9.Image = bmps[2, 2]; 
関連する問題