2010-02-20 21 views
1

不要问我为什么,但我不能使用这种方法,因为我需要创建2个图像对象来使它工作。调整图像大小的其他方法比Graphics.DrawImage

我希望能够调整一个Image对象的大小而不需要创建另一个Image对象。这是可能的和如何?

+0

2topicstarter:您的问题实际上是关于.NET还是GDI +(主要用于本机环境)? – Vlad 2010-02-20 23:36:59

+0

嗯,不是GDI +的一部分? – Tomasi 2010-02-20 23:50:15

+0

总之,没有。通常当用C#编程时,你会使用WPF,它隐藏了关于绘图的细节(也许和WinForms一样,我不确定)。实际上,WPF也可以使用DirectX作为后端。 但是,当您正在开发本机应用程序时,通常直接使用GDI或GDI +。 – Vlad 2010-02-21 12:46:04

回答

0

不,这是不可能的。 Image对象的高度和宽度在对象构建时固定。此限制存在于底层的GDI + API中。

如果您不需要修改Image,则每次渲染时缩放它都是可以接受的。例如,在Control.Paint事件中,可以使用Graphics.DrawImage直接将其呈现到PaintEventArgs.Graphics上下文中。这将允许您以不同尺寸绘制图像,而无需创建其他Image对象。

+0

我与你一起创建了一个Image对象,它不能被更改,所以它总是需要另一个图像来复制到调整大小的图像。 – 2010-02-22 22:55:48

2

如果你的理由是内存或类似的问题(非常大的图像)。您可以尝试打开它并使用Aforge调整它的大小。

1

您可以使用Matrix来调整图像大小。您必须创建一个矩阵并将其缩放并将其设置为您的Graphics对象。

Matrix mx = new Matrix(); 
mx.Scale(2.0f,2.0f); 
graphics.Transform=mx; 
graphics.DrawImage(...);