本文整理汇总了C#中System.Drawing.Rect.Contains方法的典型用法代码示例。如果您正苦于以下问题:C# Rect.Contains方法的具体用法?C# Rect.Contains怎么用?C# Rect.Contains使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类System.Drawing.Rect
的用法示例。
在下文中一共展示了Rect.Contains方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: PickTextGlyph
/// <summary>
/// Returns the index of the glyph that is located at a certain location within a text.
/// </summary>
/// <param name="text">The text from which to pick a glyph.</param>
/// <param name="x">X-Coordinate of the position where to look for a glyph.</param>
/// <param name="y">Y-Coordinate of the position where to look for a glyph.</param>
/// <returns>The index of the glyph that is located at the specified position.</returns>
public int PickTextGlyph(string text, float x, float y)
{
float curOffset = 0.0f;
GlyphData glyphData;
Rect uvRect;
Rect glyphRect;
float glyphXOff;
float glyphXAdv;
for (int i = 0; i < text.Length; i++)
{
this.ProcessTextAdv(text, i, out glyphData, out uvRect, out glyphXAdv, out glyphXOff);
glyphRect = new Rect(curOffset + glyphXOff, 0, glyphData.width, glyphData.height);
if (glyphRect.Contains(x, y)) return i;
curOffset += glyphXAdv;
}
return -1;
}
示例2: PickShapes
private List<ShapeInfo> PickShapes(RigidBody body, Vector2 worldCoord, Vector2 worldSize)
{
Rect worldRect = new Rect(worldCoord.X, worldCoord.Y, worldSize.X, worldSize.Y);
// Do a physical picking operation
List<ShapeInfo> result = body.PickShapes(worldCoord, worldSize);
// Special case for LoopShapes, because they are by definition unpickable
foreach (LoopShapeInfo loop in body.Shapes.OfType<LoopShapeInfo>())
{
bool hit = false;
for (int i = 0; i < loop.Vertices.Length; i++)
{
Vector2 worldV1 = body.GameObj.Transform.GetWorldPoint(loop.Vertices[i]);
Vector2 worldV2 = body.GameObj.Transform.GetWorldPoint(loop.Vertices[(i + 1) % loop.Vertices.Length]);
hit = hit || MathF.LinesCross(
worldRect.TopLeft.X,
worldRect.TopLeft.Y,
worldRect.TopRight.X,
worldRect.TopRight.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || MathF.LinesCross(
worldRect.TopLeft.X,
worldRect.TopLeft.Y,
worldRect.BottomLeft.X,
worldRect.BottomLeft.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || MathF.LinesCross(
worldRect.BottomRight.X,
worldRect.BottomRight.Y,
worldRect.TopRight.X,
worldRect.TopRight.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || MathF.LinesCross(
worldRect.BottomRight.X,
worldRect.BottomRight.Y,
worldRect.BottomLeft.X,
worldRect.BottomLeft.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || worldRect.Contains(worldV1) || worldRect.Contains(worldV2);
if (hit) break;
}
if (hit)
{
result.Add(loop);
continue;
}
}
return result;
}
示例3: IsOutlineBoxIntersection
private bool IsOutlineBoxIntersection(Transform transform, Vector2[] vertices, Rect box)
{
bool hit = false;
for (int i = 0; i < vertices.Length; i++)
{
Vector2 worldV1 = transform.GetWorldPoint(vertices[i]);
Vector2 worldV2 = transform.GetWorldPoint(vertices[(i + 1) % vertices.Length]);
hit = hit || MathF.LinesCross(
box.TopLeft.X,
box.TopLeft.Y,
box.TopRight.X,
box.TopRight.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || MathF.LinesCross(
box.TopLeft.X,
box.TopLeft.Y,
box.BottomLeft.X,
box.BottomLeft.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || MathF.LinesCross(
box.BottomRight.X,
box.BottomRight.Y,
box.TopRight.X,
box.TopRight.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || MathF.LinesCross(
box.BottomRight.X,
box.BottomRight.Y,
box.BottomLeft.X,
box.BottomLeft.Y,
worldV1.X, worldV1.Y, worldV2.X, worldV2.Y);
hit = hit || box.Contains(worldV1) || box.Contains(worldV2);
if (hit) return true;
}
return false;
}