[英]how to get data from rect in wpf c#?
我用左,上,寬和高的矩形。 我想將其轉換為Path並獲取數據。
有沒有辦法做到這一點。 我只想檢查兩個路徑是否相互重疊並使用此方法。
任何建議將不勝感激。 TIA!
Geometry geo1 = parentShape.Data.Clone();
geo1.Transform = parentShape.RenderTransform;
Geometry geo2 = childShape.Data.Clone();
geo2.Transform = childShape.RenderTransform;
geo1.FillContainsWithDetail(geo2);
編輯:請參閱我的代碼。 讓我知道我哪里錯了:(
private bool CheckIfOverlapping(Rect rect1, Rect rect2, double rotation)
{
Geometry geo1 = RotatedRect(rect1, 0);
Geometry geo2 = RotatedRect(rect2, rotation);
var response1 = geo1.FillContainsWithDetail(geo2);
var response2 = geo2.FillContainsWithDetail(geo1);
var response3 = geo2.FillContains(geo1);
var response4 = geo1.FillContains(geo2);
return response4 || response3 || response1 == IntersectionDetail.Intersects || response2 == IntersectionDetail.Intersects;
}
private static Geometry RotatedRect(Rect rect, double rotation)
{
var centerX = (rect.Left + rect.Right) / 2;
var centerY = (rect.Top + rect.Bottom) / 2;
return new RectangleGeometry
{
Rect = rect,
Transform = new RotateTransform(rotation, centerX, centerY),
};
}
public Main()
{
var rect1 = new Rect(3546.5, 2734, 0, 0);
var rect2 = new Rect(3510, 2731, 60, 52);
Debug.WriteLine(CheckIfChildIsInsideParent(rect1, rect2, 180));
}
您可以使用以下方法從旋轉的Rect創建幾何:
private static Geometry RotatedRect(Rect rect, double rotation)
{
var centerX = (rect.Left + rect.Right) / 2;
var centerY = (rect.Top + rect.Bottom) / 2;
return new RectangleGeometry
{
Rect = rect,
Transform = new RotateTransform(rotation, centerX, centerY)
};
}
像這樣嘗試:
var rect1 = new Rect(100, 100, 100, 100);
var rect2 = new Rect(200, 100, 100, 100);
var geo1 = RotatedRect(rect1, 45);
var geo2 = RotatedRect(rect2, 45);
Debug.WriteLine(geo1.FillContainsWithDetail(geo2));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.