Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何修复纵横比的if语句_C#_Wpf_Xaml - Fatal编程技术网

C# 如何修复纵横比的if语句

C# 如何修复纵横比的if语句,c#,wpf,xaml,C#,Wpf,Xaml,我有一个基于用户输入的高度和宽度创建矩形的代码。我希望宽度始终为250,高度根据纵横比调整,最大值为250。无论出于何种原因,当高度大于宽度时,if语句似乎不起作用。否则,它似乎会起作用 我尝试过在代码中移动if语句,并将它们更改为if-else,但似乎没有什么不同 private readonly double maxWidth = 250; private readonly double maxHeight = 250; Rectangle rect = null; public vo

我有一个基于用户输入的高度和宽度创建矩形的代码。我希望宽度始终为250,高度根据纵横比调整,最大值为250。无论出于何种原因,当高度大于宽度时,if语句似乎不起作用。否则,它似乎会起作用

我尝试过在代码中移动if语句,并将它们更改为if-else,但似乎没有什么不同

private readonly double maxWidth = 250;
private readonly double maxHeight = 250;

Rectangle rect = null;


public void CreateARectangle() 
{
    if (rect == null) 
    {
        // Creates a Rectangle  
        rect = new Rectangle();

        double aspect = xcoord / ycoord;
        rect.Width = maxWidth;
        rect.Height = maxWidth / aspect;

        // Add Rectangle to the Grid.  
        can.Children.Add(rect);
    }

    if (rect.Width > maxWidth && rect.Height > maxHeight)
    {
        rect.Width = maxWidth;
        rect.Height = maxWidth * (xcoord / ycoord);
    } 
    else if (rect.Width < maxWidth && rect.Height > maxHeight) 
    {
        rect.Width = maxWidth;
        rect.Height = maxWidth * (xcoord / ycoord);
    } 
    else
    {

        double aspect = (xcoord / ycoord);
        rect.Width = maxWidth;
        rect.Height = maxWidth / aspect;
    }
}
private readonly double maxWidth=250;
private readonly double maxHeight=250;
矩形rect=null;
public void CreateARectangle()
{
if(rect==null)
{
//创建一个矩形
rect=新矩形();
双方面=xcoord/ycoord;
矩形宽度=最大宽度;
矩形高度=最大宽度/纵横比;
//将矩形添加到网格中。
can.Children.Add(rect);
}
if(rect.Width>maxWidth&&rect.Height>maxHeight)
{
矩形宽度=最大宽度;
矩形高度=最大宽度*(xcoord/ycoord);
} 
else if(rect.WidthmaxHeight)
{
矩形宽度=最大宽度;
矩形高度=最大宽度*(xcoord/ycoord);
} 
其他的
{
双方面=(xcoord/ycoord);
矩形宽度=最大宽度;
矩形高度=最大宽度/纵横比;
}
}

似乎代码没有正确地输入if语句,但我看不出我做错了什么。我不熟悉这一点……提前感谢。

我举了一个简单的例子:

  • 宽度始终设置为
    250
  • 将根据系数调整高度
  • 当高度高于
    250
    或高于宽度时,将显示信息
代码:

XAML:


那么你的If语句

if (rect.Width > maxWidth && rect.Height > maxHeight)
    {
        rect.Width = maxWidth;
        rect.Height = maxWidth * (xcoord / ycoord);
    }
永远不能为真,因为您将
rect.Width
设置为
maxWidth
,因此这两个条件都不能为真(最大
rect.Height>maxHeight

第二个If语句也是如此:

if(rect.Width

不可能是真的,因为它们总是有相同的价值

这就是为什么您的应用程序总是进入

else
    {
        double aspect = (xcoord / ycoord);
        rect.Width = maxWidth;
        rect.Height = maxWidth / aspect;
    }

xcoord
ycoord
到底代表什么?对不起,这些是用户输入的宽度和高度
if (rect.Width > maxWidth && rect.Height > maxHeight)
    {
        rect.Width = maxWidth;
        rect.Height = maxWidth * (xcoord / ycoord);
    }
else
    {
        double aspect = (xcoord / ycoord);
        rect.Width = maxWidth;
        rect.Height = maxWidth / aspect;
    }