C# 如何将图像切割成9块并控制宽度和高度?
嗨,伙计们,我在这段代码中有问题,我想显示我的照片切成9块,并显示在9个图片框中,使益智游戏希望任何人都能帮助。 提前谢谢C# 如何将图像切割成9块并控制宽度和高度?,c#,C#,嗨,伙计们,我在这段代码中有问题,我想显示我的照片切成9块,并显示在9个图片框中,使益智游戏希望任何人都能帮助。 提前谢谢 var knight = new Image[9]; var H = Image.FromFile("1425435_630471227004342_2061223205_o.jpg"); for (int i = 0; i < 3; i++) { for (int j = 0; j < 3; j++) { var index =
var knight = new Image[9];
var H = Image.FromFile("1425435_630471227004342_2061223205_o.jpg");
for (int i = 0; i < 3; i++)
{
for (int j = 0; j < 3; j++)
{
var index = i * 3 + j;
knight[index] = new Bitmap(200,200);
var m = Graphics.FromImage(knight[index]);
Rectangle r = new Rectangle( i * (knight[index].Width / 3),
j*(knight[index].Height / 3),
knight[index].Width / 3,
knight[index].Height / 3);
m.DrawImage(H, r, r, GraphicsUnit.Pixel);
m.Dispose();
}
}
pictureBox1.Image = knight[0];
pictureBox2.Image = knight[1];
pictureBox3.Image = knight[2];
pictureBox4.Image = knight[3];
pictureBox5.Image = knight[4];
pictureBox6.Image = knight[5];
pictureBox7.Image = knight[6];
pictureBox8.Image = knight[7];
pictureBox9.Image = knight[8];
改变这个
Rectangle r = new Rectangle( i * (knight[index].Width / 3),
j*(knight[index].Height / 3),
knight[index].Width / 3,
knight[index].Height / 3);
m.DrawImage(H, r, r, GraphicsUnit.Pixel);
为此:
out of the loop:
// old size of the parts:
int ow = H.Width / 3;
int oh = H.Height / 3;
// new size of the parts:
int nw = knight[0].Width;
int nh = knight[0].Height;
// inner loop:
Rectangle rDest = new Rectangle(0, 0, nw, nh);
Rectangle rSource = new Rectangle(i * ow, j * oh, ow, oh);
m.DrawImage(H, rDest, rSource , GraphicsUnit.Pixel);
注意:如果原始图像和9个PBs的比例不同,则会出现失真:
您没有使用TaW提到的单独的源矩形。此外,您还没有完全占用picturebox 请尝试以下代码:
knight[index] = new Bitmap(640, 360); //enter the size of the original image
Rectangle src = new Rectangle(i * (knight[index].Width / 3), j * (knight[index].Height / 3), knight[index].Width / 3, knight[index].Height / 3);
Rectangle des = new Rectangle(0, 0, knight[index].Width, knight[index].Height);
m.DrawImage(H, des, src, GraphicsUnit.Pixel);
你的代码有什么特别的问题?没有根据需要剪切照片在宽度和高度上有问题,如果我把它们放在一起,就要把它们剪成9块,得到主照片@Cyral你能展示一个发生了什么错误的可视化例子吗?一定要查找以下参数:H、rDestination、rSource、GraphicsUnit.Pixel;rDestination应该是新的矩形0,0,w,hy如果你想在新位图的左上角绘制,那么x和y必须是0。现在它显示6张图3小3大,不显示完整的photoknight是你的数组。矩形的代码应该进入内部循环!宽度和高度只需设置一次。请注意,我在他们的代码中有一个错误,现在请查看已更正的代码!哎呀,不是我!原始图像!我把它做成int-ow=knight[j].Width/3;int oh=骑士[j].身高/3;它只显示了我想要的照片的左侧,但它没有显示所有的照片。请不要把我的代码改成旧错误!按照上次修改后我写的那样做!如果PictureBox的订购方式正确,现在已测试其工作。。