我正在地图上绘制一个单元格墙,尺寸错误。我在调试器中检查了图像的高度,它与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);
}
答案 0 :(得分: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>
等等...问题解决了:))
答案 1 :(得分:1)
以编程方式在WPF中绘制图像时,默认情况下其stretch属性设置为uniform。添加以下行:
verticalWall.Stretch = Stretch.Fill;
现在即使它没有均匀拉伸也能正确调整尺寸。