如何在银光中设置图像的位置

本文关键字:设置 图像 位置 | 更新日期: 2023-09-27 18:01:33

我已经得到了拖放图像,它位于ContentPanel中。在MouseLeave事件中,我得到图像的位置,然后我需要将其对齐到我的网格。我试着用Canvas来做,但是没有效果。当我试着改变页边距时,位置是完全错误的。

代码:

private void MouseLeave(object sender, MouseEventArgs e)
    {
        Image rs = (Image)sender;
        GeneralTransform gt = rs.TransformToVisual(ContentPanel);
        Point offset = gt.Transform(new Point(0, 0));
        double controlTop = offset.Y;
        double controlLeft = offset.X;
        tb.Text = Convert.ToInt16(controlLeft / 40).ToString();
        tb2.Text = Convert.ToInt16(controlTop / 40).ToString();
        double newLeft = Convert.ToInt16(controlLeft / 40)*40;
        double newTop = Convert.ToInt16(controlTop / 40)*40;
        //rs.Margin = new Thickness(newLeft, newTop, 0, 0);
        //((Image)ContentPanel.Children[11]).SetValue(Canvas.LeftProperty, newLeft);
        //((Image)ContentPanel.Children[11]).SetValue(Canvas.TopProperty, newTop);
    }

那么如何设置图像的位置呢?

如何在银光中设置图像的位置

一种方法可以是应用翻译转换到您的图像?

类似的东西应该可以工作:

Image rs = (Image)sender;
GeneralTransform gt = rs.TransformToVisual(ContentPanel);
Point offset = gt.Transform(new Point(0, 0));
//create a translate transform 
TranslateTransform tt = new TranslateTransform();
//apply the required offset
tt.X = offset.X;
tt.Y = offset.Y;
//apply the transform to the image
rs.RenderTransform = tt;
double controlTop = offset.Y;
double controlLeft = offset.X;
tb.Text = Convert.ToInt16(controlLeft / 40).ToString();
tb2.Text = Convert.ToInt16(controlTop / 40).ToString();
double newLeft = Convert.ToInt16(controlLeft / 40) * 40;
double newTop = Convert.ToInt16(controlTop / 40) * 40;