根据设备的宽度和高度调整图像大小

时间:2014-02-21 16:38:25

标签: c# asp.net visual-studio-2008

我正在尝试在asp.net Visual Studio V2008中调整图像大小,c#

using (Graphics newgraphics = Graphics.FromImage(myBackgroundImage))
{
newgraphics.Clear(Color.FromArgb(-1));
if ((float)oldbmp.Width / (float)Width == (float)oldbmp.Height / (float)Height)            
  {
    newgraphics.DrawImage(oldbmp, 0, 0, Width, Height);
  }
} 

我输入了上面的代码,但是我在构建时遇到以下错误。

Graphic.DrawImage重载。它期待,int,int,Rectangle,graphicsunit

有人有什么建议吗?

非常感谢 雷切

2 个答案:

答案 0 :(得分:0)

根据您提供的错误消息,您似乎没有为DrawImage方法提供正确的参数。

你能确认'oldbmp'属于什么类型吗?它应该是一个'Image'类型,以满足其中一个过载要求。

以下是DrawImage方法的所有重载。

http://msdn.microsoft.com/en-us/library/system.drawing.graphics.drawimage(v=vs.110).aspx

根据您的代码,下面的重载应该可以胜任。

http://msdn.microsoft.com/en-us/library/2ab36azw(v=vs.110).aspx

您是否尝试过使用0.0F代替0?

答案 1 :(得分:0)

我已经解决了这个问题     

        
  •        

    在InitializeComponent中,我添加了以下两行

        
  •     
            'this.AutoScaleDimensions = new System.Drawing.SizeF(96F, 96F);'
            'this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Dpi;'
        
            这就解释了为什么我这样做了            CLick Here     
  •         

    我将图像附加到表单皮肤上        - 因为它正在绘制油漆覆盖方法        - 上面的代码不会重新调整绘制覆盖方法中绘制的图像的大小         

        
  •     
  • 将sizemode设置为Stretch Image,然后检查设备的DPI           并相应地重置图像     
  •     
    这应该够了吧     

感谢jundev为您的病人。