我对编程比较陌生。我需要从给定的维度(比如 axb)计算纵横比(16:9 或 4:3)。如何使用 C# 实现这一点。任何帮助将不胜感激。
public string AspectRatio(int x, int y)
{
//code am looking for
return ratio
}
谢谢。
我对编程比较陌生。我需要从给定的维度(比如 axb)计算纵横比(16:9 或 4:3)。如何使用 C# 实现这一点。任何帮助将不胜感激。
public string AspectRatio(int x, int y)
{
//code am looking for
return ratio
}
谢谢。
您需要找到最大公约数,并将 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));
附言
如果您希望它处理像 16:10 之类的东西(可以除以 2,使用上面的方法将返回 8:5),您需要有一个预定义的((float)x)/y
长宽比对表
由于您只需要在 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";
}
您需要找到 GCD (http://en.wikipedia.org/wiki/Greatest_common_divisor),然后:
return x/GCD + ":" + y/GCD;