我在将图像上传到 UWP 中的 canvas 时遇到问题
I have a problem with uploading the image to the canvas in UWP
在我的 MainPage
中,当我尝试 运行 函数 (ShowEntity) 时,图像不会显示在背景上。
当我 运行 它在我的播放器上时(class 在我的项目中)然后图像不会显示在屏幕上。
我试过几次更改格式,但没有发现问题。
我认为 ShowEntity 函数有问题。
这是我如何尝试让它发挥作用的一个例子。
Player _player1 = new Player(500, 500, 150, 150, "ms-appx:///Asssets/Player5.gif");
public class Piece
{
private double _x;
private double _y;
public int _width;
private int _height;
public string _image;
public Image _imagesource { get; set; }
public Piece(double x, double y, int width, int height, string image)//BitmapImage imagesource)
{
_x = x;
_y = y;
_image = image;
_width = width;
_height = height;
_imagesource = ShowEntity();
}
private Image ShowEntity()
{
Image _img = new Image();
_img.Source = new BitmapImage(new Uri(_image));
_img.Height = _height;
_img.Width = _width;
Canvas.SetLeft(_img, _x);
Canvas.SetTop(_img, _y);
GameManager.MyCanvas.Children.Add(_img);
return _img;
}
问题看起来你的图像被其他元素覆盖了,如果你想在Canvas中显示元素,你需要为元素设置ZIndex。
Canvas.ZIndex 声明 Canvas 的子元素的绘制顺序。当子元素的任何边界之间存在重叠时,这很重要。较高的 z-order 值将绘制在较低的 z-order 值之上。如果没有设置值,则默认为-1。
如果你想将图像设置为背景,你可以将它的 ZIndex 设置为小值。另一种方法是像下面这样直接用ImageBrush设置Canvas背景。
MyCanvas.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri(this.BaseUri, "ms-appx:///Assets/enemy.png")), Stretch = Stretch.Fill };
在我的 MainPage
中,当我尝试 运行 函数 (ShowEntity) 时,图像不会显示在背景上。
当我 运行 它在我的播放器上时(class 在我的项目中)然后图像不会显示在屏幕上。
我试过几次更改格式,但没有发现问题。
我认为 ShowEntity 函数有问题。
这是我如何尝试让它发挥作用的一个例子。
Player _player1 = new Player(500, 500, 150, 150, "ms-appx:///Asssets/Player5.gif");
public class Piece
{
private double _x;
private double _y;
public int _width;
private int _height;
public string _image;
public Image _imagesource { get; set; }
public Piece(double x, double y, int width, int height, string image)//BitmapImage imagesource)
{
_x = x;
_y = y;
_image = image;
_width = width;
_height = height;
_imagesource = ShowEntity();
}
private Image ShowEntity()
{
Image _img = new Image();
_img.Source = new BitmapImage(new Uri(_image));
_img.Height = _height;
_img.Width = _width;
Canvas.SetLeft(_img, _x);
Canvas.SetTop(_img, _y);
GameManager.MyCanvas.Children.Add(_img);
return _img;
}
问题看起来你的图像被其他元素覆盖了,如果你想在Canvas中显示元素,你需要为元素设置ZIndex。
Canvas.ZIndex 声明 Canvas 的子元素的绘制顺序。当子元素的任何边界之间存在重叠时,这很重要。较高的 z-order 值将绘制在较低的 z-order 值之上。如果没有设置值,则默认为-1。
如果你想将图像设置为背景,你可以将它的 ZIndex 设置为小值。另一种方法是像下面这样直接用ImageBrush设置Canvas背景。
MyCanvas.Background = new ImageBrush { ImageSource = new BitmapImage(new Uri(this.BaseUri, "ms-appx:///Assets/enemy.png")), Stretch = Stretch.Fill };