本文整理汇总了C#中System.Windows.Media.Geometry.FillContains方法的典型用法代码示例。如果您正苦于以下问题:C# Geometry.FillContains方法的具体用法?C# Geometry.FillContains怎么用?C# Geometry.FillContains使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Windows.Media.Geometry
的用法示例。
在下文中一共展示了Geometry.FillContains方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: DrawGeometry
/// <summary>
/// DrawGeometry -
/// Draw a Geometry with the provided Brush and/or Pen.
/// If both the Brush and Pen are null this call is a no-op.
/// </summary>
/// <param name="brush">
/// The Brush with which to fill the Geometry.
/// This is optional, and can be null, in which case no fill is performed.
/// </param>
/// <param name="pen">
/// The Pen with which to stroke the Geometry.
/// This is optional, and can be null, in which case no stroke is performed.
/// </param>
/// <param name="geometry"> The Geometry to fill and/or stroke. </param>
public override void DrawGeometry(
Brush brush,
Pen pen,
Geometry geometry)
{
if (IsCurrentLayerNoOp ||(geometry == null) || geometry.IsEmpty())
{
return;
}
if (brush != null)
{
_contains |= geometry.FillContains(_point);
}
// If we have a pen and we haven't yet hit, try the widened geometry.
if ((pen != null) && !_contains)
{
_contains |= geometry.StrokeContains(pen, _point);
}
// If we've hit, stop walking.
if (_contains)
{
StopWalking();
}
}
示例2: IsPointWithinGeometry
//public static PathGeometry GetRotatedGeometry(Rect rect, float rotationDegrees, Vector3 rotationCenter)
//{
// var positions = new List<Vector3>
// {
// new Vector3((float)rect.BottomRight.X,(float)rect.BottomRight.Y,0),
// new Vector3((float)rect.BottomLeft.X,(float)rect.BottomLeft.Y,0),
// new Vector3((float)rect.TopLeft.X,(float)rect.TopLeft.Y,0),
// new Vector3((float)rect.TopRight.X,(float)rect.TopRight.Y,0),
// };
// return GetRotatedGeometry(positions, rotationDegrees, rotationCenter);
//}
//public static PathGeometry GetRotatedGeometry(List<Vector3> positions, float rotationDegrees, Vector3 rotationCenter)
//{
// if (!positions.Any())
// return null;
// var rotationTransform = new RotateTransform(rotationDegrees, rotationCenter.X, rotationCenter.Y);
// var figures = new List<PathFigure>();
// var segments = positions.Select(position =>
// {
// var point = new Point(position.X, position.Y);
// var rotatedPoint = rotationTransform.Transform(point);
// return new System.Windows.Media.LineSegment(rotatedPoint, false);
// }).ToList();
// var firstSegment = segments.First();
// segments.RemoveAt(0);
// figures.Add(new PathFigure(firstSegment.Point, segments, true));
// var geo = new PathGeometry(figures, FillRule.Nonzero, null);
// geo.GetOutlinedPathGeometry();
// return geo;
//}
public static bool IsPointWithinGeometry(Geometry geom, Vector3 point)
{
return geom.FillContains(new Point(point.X, point.Y));
}
示例3: PushClip
/// <summary>
/// PushClip -
/// Push a clip region, which will apply to all drawing primitives until the
/// corresponding Pop call.
/// </summary>
/// <param name="clipGeometry"> The Geometry to which we will clip. </param>
public override void PushClip(
Geometry clipGeometry)
{
if (!IsPushNoOp())
{
PushPointStack(_point);
// If the clip being pushed doesn't contain the hit test point,
// then we don't need to consider any of the subsequent Drawing
// operations in this layer.
if ((clipGeometry != null) && !clipGeometry.FillContains(_point))
{
IsCurrentLayerNoOp = true;
}
}
}
示例4: IsItemInGeometry
private bool IsItemInGeometry(object item, Geometry geometry)
{
var container = ItemContainerGenerator.ContainerFromItem(item) as UIElement;
Point? viewportPosition;
return container != null &&
(viewportPosition = MapPanel.GetViewportPosition(container)).HasValue &&
geometry.FillContains(viewportPosition.Value);
}