本文整理匯總了C#中System.Drawing.Rectangle.Covers方法的典型用法代碼示例。如果您正苦於以下問題:C# Rectangle.Covers方法的具體用法?C# Rectangle.Covers怎麽用?C# Rectangle.Covers使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類System.Drawing.Rectangle
的用法示例。
在下文中一共展示了Rectangle.Covers方法的2個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的C#代碼示例。
示例1: UpdateEmptyFields
/// <summary>
/// Uaktualnij EmptyFields
/// </summary>
/// <param name="insertedRectangle">Wstawiany prostok�t</param>
private void UpdateEmptyFields(Rectangle insertedRectangle)
{
IEnumerator<Rectangle> enumerator = emptyFields.GetEnumerator();
//sprawdzamy czy sa jakies puste, ktore zostaly calkowicie pokryte przez ostatnio dodany prostokat
List<Rectangle> toDelete = new List<Rectangle>();
while (enumerator.MoveNext())
{
Rectangle empty = enumerator.Current;
if (empty != null)
if (insertedRectangle.Covers(empty))
//emptyFields.Remove(empty);
toDelete.Add(empty);
}
foreach (Rectangle r in toDelete)
emptyFields.Remove(r);
toDelete.Clear();
enumerator = emptyFields.GetEnumerator();
List<Rectangle> toAdd = new List<Rectangle>();
//sprawdzamy czy sa jakies czesciowo pokryte puste
while (enumerator.MoveNext())
{
Rectangle empty = enumerator.Current;
if (empty != null)
{
Rectangle intersection = insertedRectangle.IntersectionRect(empty);
if (intersection != null)
{
//emptyFields.Remove(empty);
toDelete.Add(empty);
List<Rectangle> subtr = empty.Subtract(insertedRectangle);
//emptyFields.AddRange(subtr);
// poprawione - Pawe�
//toAdd.AddRange(subtr);
addToList(toAdd, subtr);
}
}
}
foreach (Rectangle r in toDelete)
emptyFields.Remove(r);
toDelete.Clear();
foreach (Rectangle r in toAdd)
// poprawione - Pawe�
//emptyFields.AddRange(toAdd);
addToList(emptyFields, toAdd);
toAdd.Clear();
//sprawdzamy czy trzeba dodac jakies nowe EmptyFields
AddNewEmptyFields(insertedRectangle);
}
示例2: InsertRectangle
/// <summary>
/// Wstawia prostok�t do kontenera
/// </summary>
/// <param name="r">Prostok�t do wstawienia</param>
/// <param name="rLeftTop">Lewy g�rny wierzcho�ek prostok�ta</param>
/// <param name="o">Orientacja prostok�ta</param>
public void InsertRectangle(Rectangle r, Point rLeftTop, Rectangle.Orientation o)
{
Console.WriteLine("insert rect[(" + r.LeftTop.X + ", " + r.LeftTop.Y + "), (" +
r.RightDown.X + ", " + r.RightDown.Y + ")]" + " -> (" + rLeftTop.X + ", " +
rLeftTop.Y + ")");
InsertRectangleCheckParameters(r, rLeftTop);
if (o.Equals(Rectangle.Orientation.Horizontal) && r.SideA < r.SideB)
r.Rotate();
else if (o.Equals(Rectangle.Orientation.Vertical) && r.SideA > r.SideB)
r.Rotate();
if (rectangles.Count == 0)
FirstRectanglePreparation(r);
else
r.Move(rLeftTop);
rectangles.Add(r);
//jesli to byl pierwszy prostakat wszystko jest dobrze - nie trzeba tego robic
if (rectangles.Count > 1)
{
// spr. czy po dodaniu wciaz prawidlowy prostokat
if (isCorrectRectangle)
{
// doklejamy od dolu prostokata
if (r.LeftTop.X == maxCorrectRect.LeftTop.X &&
r.RightDown.X == maxCorrectRect.RightDown.X &&
r.LeftTop.Y <= maxCorrectRect.RightDown.Y)
UpdateMaxRectangles(r);
// doklejamy z prawej strony prostokata
else if (r.LeftTop.Y == maxCorrectRect.LeftTop.Y &&
r.RightDown.Y == maxCorrectRect.RightDown.Y &&
r.LeftTop.X <= maxCorrectRect.RightDown.X)
UpdateMaxRectangles(r);
// naklejamy na prostokat
else if (maxCorrectRect.Covers(r))
r.SetParentRectangle(maxCorrectRect);
// zaklejamy ca�y prostok�t - to r�wnie g�upi przypadek jak poprzedni, ale skoro kto� tak chce...
else if (r.Covers(maxCorrectRect))
UpdateMaxRectangles(r);
// calosc przestaje byc poprawnym prostokatem
else
{
isCorrectRectangle = false;
AddNewEmptyFields(r);
UpdateMaxPossibleRectangle(r);
}
}// gdy calosc nie jest prawidlowym prostokatem
else
{
//sprawdzenie czy dodanie prostokata nie pokrylo calkowicie jakichs emptyFields
//spr. czy przeciecia dodanego z empty sa niepuste (jesli tak - usuwamy odpow. empty z listy i wstawiamy zamiast niego empty-dodany)
//spr. czy nie zmienil sie maxPossibleRect
UpdateEmptyFields(r);
if (emptyFields.Count == 0)
UpdateMaxCorrectAfterFillingAllEmpties();
UpdateMaxPossibleRectangle(r);
}
}
}