本文整理汇总了C#中IGraphic.DrawEllipse方法的典型用法代码示例。如果您正苦于以下问题:C# IGraphic.DrawEllipse方法的具体用法?C# IGraphic.DrawEllipse怎么用?C# IGraphic.DrawEllipse使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类IGraphic
的用法示例。
在下文中一共展示了IGraphic.DrawEllipse方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。
示例1: Show
/// <summary>
/// Shows the missle on canva
/// </summary>
/// <param name="canva">The canva.</param>
/// <param name="visibleStart">The visible map area start.</param>
/// <param name="visibleFinish">The visible map area finish.</param>
/// <param name="monsters">The monsters.</param>
internal void Show(IGraphic canva, Point visibleStart, Point visibleFinish, IEnumerable<Monster> monsters)
{
if ((DestroyMe) || ((_position.X - visibleStart.X * Settings.ElemSize < 5)
|| (_position.Y - visibleStart.Y * Settings.ElemSize < 5) || (-_position.X + visibleFinish.X * Settings.ElemSize < 5)
|| (-_position.Y + visibleFinish.Y * Settings.ElemSize < 5)) || (monsters == null))
return;
//Getting Monster
var monster = monsters.FirstOrDefault(elem => elem.ID == _aimID);
if (monster == null)
{
DestroyMe = true;
return;
}
Point aimPos = new Point((int)monster.GetCanvaPos.X, (int)monster.GetCanvaPos.Y);
switch (_missleType)
{
case eTowerType.Simple:
float tang;
if ((Math.Abs((_position.X - aimPos.X) - 0) > 0.01) && (Math.Abs((_position.Y - aimPos.Y) - 0) > 0.01))
tang = Math.Abs((_position.Y - aimPos.Y) / (_position.X - aimPos.X));
else
tang = 1;
Point secondPosition;//Position of second missle point
#region Second point calculation
if (_position.X > aimPos.X)
{
if (_position.Y > aimPos.Y)
secondPosition = new Point(
Convert.ToInt32(_position.X + 10 * Math.Sqrt(1 / (1 + Math.Pow(tang, 2)))),
Convert.ToInt32(_position.Y + 10 * Math.Sqrt(1 / (1 + Math.Pow(1 / tang, 2)))));
else
secondPosition = new Point(
Convert.ToInt32(_position.X + 10 * Math.Sqrt(1 / (1 + Math.Pow(tang, 2)))),
Convert.ToInt32(_position.Y - 10 * Math.Sqrt(1 / (1 + Math.Pow(1 / tang, 2)))));
}
else
{
if (_position.Y > aimPos.Y)
secondPosition = new Point(
Convert.ToInt32(_position.X - 10 * Math.Sqrt(1 / (1 + Math.Pow(tang, 2)))),
Convert.ToInt32((_position.Y + 10 * Math.Sqrt(1 / (1 + Math.Pow(1 / tang, 2))))));
else
secondPosition = new Point(
Convert.ToInt32(_position.X - 10 * Math.Sqrt(1 / (1 + Math.Pow(tang, 2)))),
Convert.ToInt32(_position.Y - 10 * Math.Sqrt(1 / (1 + Math.Pow(1 / tang, 2)))));
}
#endregion
canva.DrawLine(new Pen(_misslePenColor, 2),
new Point((int)((_position.X - visibleStart.X * Settings.ElemSize) * Scaling) + Settings.DeltaX,
(int)((_position.Y - visibleStart.Y * Settings.ElemSize) * Scaling) + Settings.DeltaY),
new Point((int)((secondPosition.X - visibleStart.X * Settings.ElemSize) * Scaling) + Settings.DeltaX,
(int)((secondPosition.Y - visibleStart.Y * Settings.ElemSize) * Scaling) + Settings.DeltaY));
break;
case eTowerType.Splash:
canva.FillEllipse(new SolidBrush(_missleBrushColor),
(int)(_position.X - 5 - visibleStart.X * Settings.ElemSize) * Scaling + Settings.DeltaX,
(int)(_position.Y - 5 - visibleStart.Y * Settings.ElemSize) * Scaling + Settings.DeltaY,
10 * Scaling, 10 * Scaling);
canva.DrawEllipse(new Pen(_misslePenColor),
(int)(_position.X - 5 - visibleStart.X * Settings.ElemSize) * Scaling + Settings.DeltaX,
(int)(_position.Y - 5 - visibleStart.Y * Settings.ElemSize) * Scaling + Settings.DeltaY,
10 * Scaling, 10 * Scaling);
break;
}
}