0

我在地图上画了一个单元格墙,它的大小错误。我在调试器中检查了图像的高度,它与正确的 cellSize 大小相同,但在视觉上它看起来更短,并且它的开头没有绘制在正确的位置。就像它被画在两端的顶部一样。当我更改图像的高度属性时,它不会使图像变大。这不是如何使用高度和宽度设置图像大小吗?

在此处输入图像描述

这是代码。

private void calculateWall(int wall, int cell)
        {
            int[] mapData = this.getMapData(cell);
            int startOfCol = mapData[0];
            int endOfCol = mapData[1];
            int startOfRow = mapData[2];
            int endOfRow = mapData[3];
            CellSide rightSide = this.getCells()[cell].myRightWall;
            CellSide bottomSide = this.getCells()[cell].myBottomWall;

            float thickness = myMap.myCellSize * (float)0.1;
            Math.Round(thickness, 0);
            int newThickness = Convert.ToInt32(thickness);

            float height = myMap.myCellSize * (float)0.2;
            Math.Round(height, 0);
            int newHeight = Convert.ToInt32(height);

            if (rightSide.hasWall == 1)
            {
                Image verticalWall = new Image();

                // Create source.
                BitmapImage bi = new BitmapImage();

                // BitmapImage.UriSource must be in a BeginInit/EndInit block.
                bi.BeginInit();
                bi.UriSource = new Uri("verticalWall.jpg", UriKind.RelativeOrAbsolute);
                bi.EndInit();

                // Set the image source.
                verticalWall.Source = bi;

                verticalWall.Width = newThickness;
                verticalWall.Height = myMap.myCellSize;
                verticalWall.SetValue(Canvas.TopProperty, Convert.ToDouble(startOfRow));
                verticalWall.SetValue(Canvas.LeftProperty, Convert.ToDouble(endOfCol - (newThickness / 2)));

                verticalWall.IsHitTestVisible = false;
                this.view.pbxMap.Children.Add(verticalWall);
            }
4

2 回答 2

1

当您以编程方式在 WPF 中绘制图像时,其拉伸属性默认设置为统一。添加这一行:

verticalWall.Stretch = Stretch.Fill;

现在即使拉伸不均匀,它也会正确调整大小。

于 2013-11-16T03:13:01.450 回答
1

关于评论中的最后一个问题。

好的,这是我如何构建您的项目的屏幕截图:屏幕截图在此处输入图像描述

现在,无论您在哪里使用任何图片,都必须将文件夹添加到该路径:

Source="exit.png"

会变成:

Source="/Images/exit.png"

这个:

<Page.Background>
    <ImageBrush ImageSource="marbleBackground.jpg"/>
</Page.Background>

会变成:

<Page.Background>
    <ImageBrush ImageSource="/Images/marbleBackground.jpg"/>
</Page.Background>

等等......问题解决了:)

于 2013-10-30T00:10:35.960 回答