Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows窗体C#,图像编辑_C#_Forms_Winforms_Visual Studio_Graphic - Fatal编程技术网

Windows窗体C#,图像编辑

Windows窗体C#,图像编辑,c#,forms,winforms,visual-studio,graphic,C#,Forms,Winforms,Visual Studio,Graphic,我目前正在开发一个应用程序,以自动生成瓷砖集。 其实我的问题很简单。 我在将文件分块时遇到问题。 有没有可能从图片盒中创建单独的图像,或者有没有其他更有效的方法? 我想将图形切割成平铺,重新排列。你可以相对容易地从图片盒中获得子图像,因为图像只是一个位图。您可以使用位图类Clone()方法,该方法采用矩形和像素格式 Bitmap image = pictureBox.Image; Bitmap subImage = image.Clone(new Rect(0,0,64,64), image.P

我目前正在开发一个应用程序,以自动生成瓷砖集。 其实我的问题很简单。 我在将文件分块时遇到问题。 有没有可能从图片盒中创建单独的图像,或者有没有其他更有效的方法?
我想将图形切割成平铺,重新排列。

你可以相对容易地从
图片盒中获得子图像,因为图像只是一个
位图。您可以使用位图类
Clone()
方法,该方法采用
矩形
像素格式

Bitmap image = pictureBox.Image;
Bitmap subImage = image.Clone(new Rect(0,0,64,64), image.PixelFormat);
在这种情况下,子映像将从映像中的位置(0,0)开始,大小为64x64

为了重新排列瓷砖,您可以将其打印回PictureBox,如下所示:

Graphics g = Graphics.FromImage(image);
g.drawImage(subImage, 64, 64);
pictureBox.Image = image;

这会将
子图像
绘制到我们之前从picturebox中抓取的(64,64)处的图像中,
图像
,然后将picturebox图像设置为已编辑的图像。

您的代码和任何错误?感谢您的回复,我实际上只是在寻找一个想法。用PictureBoxs处理它感觉不太好。当然,有很多方法。我会:创建它们并将它们填充到ImageList中,前提是它们符合256x256的限制。否则,列表也可以。然后将图像绘制到一个picturebox或picturebox.image中,只要您想改变布局。。要创建磁贴,请使用合适的drawimage重载和从目标位图创建的图形对象。剩下的唯一问题是实际获取加载图像的每个磁贴的内容磁贴。但是,嗯。。刚刚注意到实际上有一个裁剪位图类。。这将使事情变得更容易,谢谢你的时间。好吧,祝你的项目好运;听起来很有趣。请注意,裁剪位图不是winforms的一部分。这可能很好。然而,为了理解使用克隆的后果,即只做一个肤浅的复制。谢谢,我没有意识到克隆是如何工作的。虽然在这种情况下,只有新定义的图像会受到影响,但正确吗?是的,或者更确切地说,他从原始图像上切割的所有瓷砖都将取决于它。