绘图图像错误的大小WPF

时间:2013-10-29 03:23:25

标签: c# wpf image height

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

enter image description here

这是代码。

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);
            }

2 个答案:

答案 0 :(得分:1)

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

好的,这是我如何构建项目的屏幕截图:屏幕截图enter image description here

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

Source="exit.png"

将成为:

Source="/Images/exit.png"

此:

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

将成为:

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

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

答案 1 :(得分:1)

以编程方式在WPF中绘制图像时,默认情况下其stretch属性设置为uniform。添加以下行:

verticalWall.Stretch = Stretch.Fill;

现在即使它没有均匀拉伸也能正确调整尺寸。