我缺少一些东西。说我有以下代码:
private Bitmap source = new Bitmap (some_stream);
Bitmap bmp = new Bitmap(100,100);
Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height);
Rectangle toZoom= new Rectangle(0, 0, 10, 10);
Graphics g = Graphics.FromImage(bmp);
g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel);
我的目标是放大源图片左上角的10x10像素。创建图形对象g并调用DrawImage后:请求的矩形(toZoom)将被复制到bmp,还是会显示在屏幕上?我有点困惑,有人可以澄清一下吗?
答案 0 :(得分:1)
您的代码只会为您提供内存中的位图(不会自动显示在屏幕上)。一种显示方法的简单方法是在表单上放置一个100 x 100 PictureBox
,然后像这样设置Image
属性(使用上面代码中的Bitmap
):
pictureBox1.Image = bmp;
此外,您还需要代码中的一些using
块:
using (private Bitmap source = new Bitmap (some_stream))
{
Bitmap bmp = new Bitmap(100,100);
Rectangle newRect = new Rectangle(0, 0, bmp.Width, bmp.Height);
Rectangle toZoom= new Rectangle(0, 0, 10, 10);
using (Graphics g = Graphics.FromImage(bmp))
{
g.DrawImage(source, newRect, toZoom, GraphicsUnit.Pixel);
}
pictureBox1.Image = bmp;
}
请注意,using
没有bmp
块 - 这是因为您将其设置为PictureBox的Image属性。 using
块在块的作用域末尾自动调用对象的Dispose方法,由于它仍在使用中,因此您不想这样做。
答案 1 :(得分:0)
它将被复制而不显示。