مطالب قبل:
پیاده سازی پروژه نقاشی شی گرا *قسمت اول*
پیاده سازی پروژه نقاشی شی گرا *قسمت دوم*
پیاده سازی پروژه نقاشی شی گرا *قسمت سوم*
پیاده سازی پروژه نقاشی شی گرا *قسمت چهارم*
پیاده سازی پروژه نقاشی شی گرا *قسمت پنجم*
ابتدا به تشریح کلاس ترسیم بیضی (Ellipse) میپردازیم.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
|
using System.Drawing;
namespace PWS.ObjectOrientedPaint.Models
{ /// <summary>
/// Ellipse Draw
/// </summary>
public class Ellipse : Shape
{
#region Constructors (2)
/// <summary>
/// Initializes a new instance of the <see cref="Ellipse" /> class.
/// </summary>
/// <param name="startPoint">The start point.</param>
/// <param name="endPoint">The end point.</param>
/// <param name="zIndex">Index of the z.</param>
/// <param name="foreColor">Color of the fore.</param>
/// <param name="thickness">The thickness.</param>
/// <param name="isFill">if set to <c>true</c> [is fill].</param>
/// <param name="backgroundColor">Color of the background.</param>
public Ellipse(PointF startPoint, PointF endPoint, int zIndex, Color foreColor, byte thickness, bool isFill, Color backgroundColor)
: base (startPoint, endPoint, zIndex, foreColor, thickness, isFill, backgroundColor)
{
ShapeType = ShapeType.Ellipse;
}
/// <summary>
/// Initializes a new instance of the <see cref="Ellipse" /> class.
/// </summary>
public Ellipse()
{
ShapeType = ShapeType.Ellipse;
}
#endregion Constructors
#region Methods (1)
// Public Methods (1)
/// <summary>
/// Draws the specified g.
/// </summary>
/// <param name="g">The g.</param>
public override void Draw(Graphics g)
{
if (IsFill)
g.FillEllipse(BackgroundBrush, StartPoint.X, StartPoint.Y, Width, Height);
g.DrawEllipse(Pen, StartPoint.X, StartPoint.Y, Width, Height);
base .Draw(g);
}
#endregion Methods
}
} |
این کلاس از شی Shape ارث برده و دارای دو سازنده ساده میباشد که نوع شی ترسیمی را مشخص میکنند، در متد Draw نیز با توجه به توپر یا توخالی بودن شی ترسیم آن انجام میشود، در این کلاس باید متد HasPointInShape بازنویسی (override) شود، در این متد باید تعیین شود که یک نقطه در داخل بیضی قرار گرفته است یا خیر که متاسفانه فرمول بیضی خاطرم نبود. البته به صورت پیش فرض نقطه با توجه به چهارگوشی که بیضی را احاطه میکند سنجیده میشود.