【发布时间】:2021-07-11 19:47:50
【问题描述】:
我只是想通过 c# 后面的代码设置这个矩形位置。首先,我在 xaml 页面中有以下图片:
<Image x:Name="danzo"
Source="danzo.png"
AbsoluteLayout.LayoutBounds="0.5, 0.2, 200, 200"
AbsoluteLayout.LayoutFlags="PositionProportional">
</Image>
如您所见,它只是一张普通的图片,并没有什么特别之处。在构造函数中,我尝试获取此图像并显示其尺寸(x、y、宽度和高度),如下所示:
Console.WriteLine("X Pos: {0}. Y Pos: {1}. Width: {2}. Height: {3}.", danzo.X, danzo.Y, danzo.Width, danzo.Height);
但它给了我“X 位置:0。Y 位置:0。宽度:-1。高度:-1。”。这根本不对。图像肯定有一些真实的尺寸值,对吧?如果这很重要,我在构造函数中的 InitializeComponent 函数之后有这个 console.writeline 代码行。
然而我在 xaml 中创建了一个按钮,并将其单击函数设置为一个名为“PrintImageDetails”的函数,其代码行与上述完全相同。结果呢?我得到“X 位置:105.714285714286。Y 位置:121.142857142857。宽度:200。高度:200。”
因此,无论出于何种原因,在构造函数之后,我似乎都无法真正获得真实的图像尺寸。 (或者也许有某种方式,我错过了)这很重要,因为我想将矩形位置设置为图像位置。这就是让我想到问题标题的原因。由于我不能立即在后面的 c# 代码中获得实际位置,是否可以让我的矩形从 .xaml 中的图像继承位置?下面是我的矩形代码。就这么简单:
<Rectangle x:Name="cropRect"
AbsoluteLayout.LayoutBounds="0.5, 0.2, 200, 200"
AbsoluteLayout.LayoutFlags="PositionProportional"
BackgroundColor="Orange"
Opacity="0.5">
</Rectangle>
我还希望能够在从图像中获取位置并将其放入矩形时进行一些数学运算。比如除法之类的。如果可能的话,将非常感谢您提供有关如何实施的示例。
感谢任何愿意提供帮助的人。
【问题讨论】:
-
“在构造函数中” - 在页面的构造函数中,尚未完成任何布局。请改用
OnAppearing -
我试一试,我想我以前从未实现过 OnAppearing。
-
使用 onappearing 似乎不起作用。我将 Console.Writeline 放在“base.OnAppearing()”之后,但它仍然没有返回正确的值。有点遗憾。
标签: c# xaml xamarin mobile icsharpcode