通过程序设置画布上的图像位置

本文关键字:图像 位置 过程 程序 设置 | 更新日期: 2023-09-27 17:51:06

我有以下代码:

namespace Game
{
    public partial class MainWindow : Window
    {
        Image img = new Image();
        public MainWindow()
        {
            InitializeComponent();
            myCanvas.Focus();
            img.Source = new BitmapImage(new Uri("C:''Users''Public''Pictures''Sample Pictures''Koala.jpg"));
            img.Width = 100;
            img.Height = 100;              
        }
        public void OnKeyDownHandler(object sender, KeyEventArgs e)
        {
            Canvas.SetTop(img, 0);
            Canvas.SetLeft(img, 0);
            this.Content = img;
        }
    }
}

和XAML:

 <Canvas Name="myCanvas" KeyDown="OnKeyDownHandler" Focusable="True" HorizontalAlignment="Left" Height="166" Margin="118,89,0,0" VerticalAlignment="Top" Width="300"/>

当我按下按钮时,图像会显示出来,就像我想做的那样,但在窗口的中心。我想做的是将图像设置在我想要的X,Y位置。我该怎么做?

通过程序设置画布上的图像位置

<Canvas>
    <Image x:Name="Foo" Canvas.Top="200" Canvas.Left="200" />
</Canvas>
Foo.SetValue(Canvas.Left, 100);
Foo.SetValue(Canvas.Top, 225);

这是我的基本测试场景。将图像设置为Image.SetValue(Canvas.Position, int)指定的位置。

类似的内容。

double left = (Canvas.ActualWidth - img.ActualWidth) / 2;
Canvas.SetLeft(img, left);
double top  = (img.ActualHeight - img.ActualHeight) / 2;
Canvas.SetTop(img, top);

在OnKeyDownHandler方法的最后一行中,"this"表示MainWindow,因此您的代码将用Image替换其内容,包括Canvas在内的整个视觉树。如果您想将图像添加到画布,它应该是类似的东西

this.myCanvas.Children.Add(img);