根据用户屏幕分辨率</asp:image>调整<asp:image>的大小

时间:2011-12-30 08:35:44

标签: c# asp.net imaging

我想在屏幕上显示图像,并且必须调整其大小(高度和宽度)以适合屏幕(拉伸或缩小)。图像已保存到服务器,为1024 x 768(示例)。

所以,此刻,我这样做:

ImageUtilities.Dimension d = 
    ImageUtilities.ImageUtilities.GetImageSize(f.FullName);
var newD = ImageUtilities.ImageUtilities.GetResized(d.Height, d.Width, 520, 520);
Image1.Height = newD.Height;
Image1.Width = newD.Width;

所以,目前,我正在强迫我的图像适合800 x 800的方形尺寸(我考虑到肖像与风景,并使用比例来维持方面。

问题是,在低分辨率屏幕上,用户必须滚动一下才能到达图像的底部(我有一个关闭按钮)。在一个非常高的res scree上,我可以保持1024乘1024作为可用区域。

有没有办法获取屏幕res,并将这些参数带入我的代码隐藏方法(GetResized是一个返回新的高度和宽度的方法)?

我知道用户可能没有使用他的浏览器 - 这没关系。

5 个答案:

答案 0 :(得分:3)

您可以定义图像大小(以百分比表示),使您从这些内容中解放出来。

答案 1 :(得分:1)

使用Javascript获取显示器屏幕分辨率,然后在javascript中更改图像大小,或将屏幕分辨率传递给后面的代码并使用C#更改图像大小。

答案 2 :(得分:0)

如果您需要有关屏幕分辨率的信息,可以使用window.screen它具有以下属性:

Properties  | Description

availHeight | Specifies the height of the screen, in pixels, minus interface     
            |     features such as the taskbar in Windows.
availWidth  | Specifies the width of the screen, in pixels, minus interface 
            |     features such as the taskbar in Windows.
colorDepth  | The bit depth of the color palette available for displaying images 
            |     in bits per pixel.
height      | The total height of the screen, in pixels.
pixelDepth  | Display screen color resolution (bits per pixel). Firefox  
            |     exclusive property.
width       | The total width of the screen, in pixels.

答案 3 :(得分:0)

正如其他人提到的那样,最好在客户端而不是服务器端处理这种情况。我建议使用CSS样式或JavaScript。

更多信息:

答案 4 :(得分:0)

您是否考虑过创建自定义服务器控件,根据屏幕分辨率调整图像大小?以下示例将MaxWidth属性添加到Image控件,但您可以修改它以将最大宽度/高度设置为与屏幕分辨率成比例:

using System;

使用System.Web; 使用System.Web.UI.WebControls;

命名空间MyNameSpace { public class MaxWidthImage:Image {     private int _MaxWidth;

public int MaxWidth
{
    get
    {
        return _MaxWidth;
    }
    set
    {
        _MaxWidth = value;
    }
}

protected override void OnPreRender(EventArgs e)
{
    if (string.IsNullOrEmpty(ImageUrl)) return;

    using (System.Drawing.Image MyImage =
        System.Drawing.Image.FromFile
        (HttpContext.Current.Server.MapPath(ImageUrl)))
    {
        int CurrentWidth = MyImage.Width;

        if (MaxWidth != 0 && CurrentWidth > MaxWidth)
        {
            CurrentWidth = MaxWidth;
        }
        Attributes.Add("width", CurrentWidth.ToString());
    }
}

} }

(来自http://evonet.com.au/extending-the-aspimage-control-to-set-a-maximum-width/