C#:如何计算宽高比

时间:2012-04-09 07:34:11

标签: c# asp.net aspect-ratio

我对编程比较陌生。我需要从给定的维度(比如axb)计算纵横比(16:9或4:3)。如何使用C#实现这一目标。任何帮助都将深表感谢。

public string AspectRatio(int x, int y)
{
 //code am looking for
 return ratio
}

感谢。

4 个答案:

答案 0 :(得分:8)

你需要找到最大公约数,并用它除x和y。

static int GCD(int a, int b)
{
    int Remainder;

    while( b != 0 )
    {
        Remainder = a % b;
        a = b;
        b = Remainder;
    }

    return a;
}

return string.Format("{0}:{1}",x/GCD(x,y), y/GCD(x,y));

PS

如果你想要它处理类似16:10的东西(可以除以2,使用上面的方法将返回8:5)你需要有一个预定义的((float)x)/y表 - 宽高比对< / p>

答案 1 :(得分:5)

由于您只需要在16:9和4:3之间做出决定,这是一个更简单的解决方案。

public string AspectRatio(int x, int y)
{
    double value = (double)x / y;
    if (value > 1.7)
        return "16:9";
    else
        return "4:3";
}

答案 2 :(得分:3)

只有几个标准比率:4:35:416:1016:9GCD是一个好主意,但至少16:10比率和1366x768分辨率会失败。

纯GCD算法将获得683:384 1366x768,因为683是素数,而分辨率几乎是16:9(16.0078125)。

我想,对于实际任务,需要实现相当复杂的算法:

首先尝试已知的宽高比(在wikipedia处查找),允许一些错误,然后才使用GCD作为后备。

不要忘记32:10; - )

答案 3 :(得分:1)

您需要找到GCD(http://en.wikipedia.org/wiki/Greatest_common_divisor)然后:

return x/GCD + ":" + y/GCD;