Me.TraceTest. Dans ce but, je vous demande de mettre provisoirement dans votre code
MessageBox.Show(Me.TraceText.GetType.ToString)
Public Class TraceCercle
Inherits TraceBase
Protected _x As Integer
Protected _y As Integer
Protected _rayon As Integer
Protected _rectangle As Rectangle
#Region " Constructeurs "
' Constructeur de base
' Le contour du cercle hérite de celui défini dans la classe de base (donc noir)
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal rayon As Integer)
Me._x = x
Me._y = y
Me._rayon = rayon
Me.CalculerRectangle()
End Sub
' Constructeur de base avec le stylo en supplément
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal rayon As Integer, ByVal stylo As Pen)
Me.New(x, y, rayon)
Me.StyloTrace = stylo
End Sub
' Constructeur avec brosse pour le remplissage
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal rayon As Integer, ByVal brosse As Brush)
Me.New(x, y, rayon)
Me.BrosseFond = brosse
End Sub
' Constructeur avec stylo pour le contour et brosse pour le remplissage
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal rayon As Integer, ByVal stylo As Pen, ByVal brosse As Brush)
Me.New(x, y, rayon, stylo)
Me.BrosseFond = brosse
End Sub
#End Region
#Region " Propriétés "
' Abscisse du centre
Public Property X() As Integer
Get
Return Me._x
End Get
Set(ByVal value As Integer)
Me._x = value
Me.CalculerRectangle()
End Set
End Property
' Ordonnée du centre
Public Property Y() As Integer
Get
Return Me._y
End Get
Set(ByVal value As Integer)
Me._y = value
Me.CalculerRectangle()
End Set
End Property
' Rayon du cercle
Public Property Rayon() As Integer
Get
Return Me._rayon
End Get
Set(ByVal value As Integer)
Me._rayon = value
Me.CalculerRectangle()
End Set
End Property
' Rectangle entourant le cercle
Public ReadOnly Property RectangleCirconscrit() As Rectangle
Get
Return Me._rectangle
End Get
End Property
#End Region
#Region " Méthodes "
' Mise à jour de la taille du rectangle circonscrit au cercle
Protected Sub CalculerRectangle()
Me._rectangle = New Rectangle(Me.X - Me.Rayon, Me.Y - Me.Rayon, Rayon * 2, Rayon * 2)
End Sub
' Tracé du cercle
Public Overrides Sub Tracer(ByVal g As System.Drawing.Graphics)
Dim rct As New Rectangle(Me._rectangle.Location, Me._rectangle.Size)
Dim mtx As Drawing2D.Matrix = Nothing
' Transformations
If Me.Angle <> 0 Then
mtx = g.Transform
g.TranslateTransform(Me._rectangle.X, Me._rectangle.Y)
g.RotateTransform(Me._angle)
' Corriger le rectangle de départ
rct.X = 0
rct.Y = 0
End If
' Tracer le fond s'il est défini
If Me.BrosseFond IsNot Nothing Then
g.FillEllipse(Me.BrosseFond, rct)
End If
' Tracer le contour s'il est défini
If Me.StyloActif IsNot Nothing Then
g.DrawEllipse(Me.StyloActif, rct)
End If
' Annuler les transformations
If Me.Angle <> 0 Then
g.Transform = mtx
End If
End Sub
#End Region
End Class
ublic MustInherit Class TraceBase Public _angle As Double Public StyloTrace As System.Drawing.Pen Public BrosseFond As System.Drawing.Brush 'Le mot clé MustOverride signifie que cette méthode doit être écrasée dans les classes dérivées Public MustOverride Sub Tracer(ByVal g As System.Drawing.Graphics) End Class
Public Class TraceArcCercle Inherits TraceBase Protected _x As Integer Protected _y As Integer Protected _AngDep As Single Protected _AngFin As Single Protected _rayon As Integer Protected _rectangle As Rectangle #Region " Constructeurs " ' Constructeur de base ' Le contour du cercle hérite de celui défini dans la classe de base (donc noir) Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer) Me._x = x Me._y = y Me._AngDep = AngleDep Me._AngFin = AngleFin Me._rayon = rayon Me.CalculerRectangle() End Sub ' Constructeur de base avec le stylo en supplément Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal stylo As Pen) Me.New(x, y, rayon, AngleDep, AngleFin) Me.StyloTrace = stylo End Sub ' Constructeur avec brosse pour le remplissage Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal brosse As Brush) Me.New(x, y, rayon, AngleDep, AngleFin) Me.BrosseFond = brosse End Sub ' Constructeur avec stylo pour le contour et brosse pour le remplissage Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal stylo As Pen, ByVal brosse As Brush) Me.New(x, y, rayon, AngleDep, AngleFin, stylo) Me.BrosseFond = brosse End Sub #End Region #Region " Propriétés " ' Abscisse du centre Public Property X() As Integer Get Return Me._x End Get Set(ByVal value As Integer) Me._x = value Me.CalculerRectangle() End Set End Property ' Ordonnée du centre Public Property Y() As Integer Get Return Me._y End Get Set(ByVal value As Integer) Me._y = value Me.CalculerRectangle() End Set End Property ' Angle de départ de l'arc de Cercle Public Property Ang_Dep() As Single Get Return Me._AngDep End Get Set(ByVal value As Single) Me._AngDep = value Me.CalculerRectangle() End Set End Property ' Angle de fin de l'arc de Cercle Public Property Ang_Fin() As Single Get Return Me._AngFin End Get Set(ByVal value As Single) Me._AngFin = value Me.CalculerRectangle() End Set End Property ' Rayon du cercle Public Property Rayon() As Integer Get Return Me._rayon End Get Set(ByVal value As Integer) Me._rayon = value Me.CalculerRectangle() End Set End Property ' Rectangle entourant le cercle Public ReadOnly Property RectangleCirconscrit() As Rectangle Get Return Me._rectangle End Get End Property #End Region #Region " Méthodes " ' Mise à jour de la taille du rectangle circonscrit au cercle Protected Sub CalculerRectangle() Me._rectangle = New Rectangle(Me.X - Me.Rayon, Me.Y - Me.Rayon, Rayon * 2, Rayon * 2) End Sub ' Tracé du cercle Public Overrides Sub Tracer(ByVal g As System.Drawing.Graphics) Dim rct As New Rectangle(Me._rectangle.Location, Me._rectangle.Size) Dim mtx As Drawing2D.Matrix = Nothing ' Transformations If Me._angle <> 0 Then mtx = g.Transform g.TranslateTransform(Me._rectangle.X, Me._rectangle.Y) g.RotateTransform(Me._angle) ' Corriger le rectangle de départ rct.X = 0 rct.Y = 0 End If ' Tracer le fond s'il est défini A FINIR If Me.BrosseFond IsNot Nothing Then 'g.FillEllipse(Me.BrosseFond, rct) End If ' Tracer le contour s'il est défini If Me.StyloTrace IsNot Nothing Then g.DrawArc(Me.StyloTrace, rct, _AngDep, _AngFin) End If ' Annuler les transformations If Me._angle <> 0 Then g.Transform = mtx End If End Sub #End Region End Class
Dim Pen As New Pen(Color.Black, 2) Dim b As New TraceCercle(250, 250, 125, Pen, redBrush) b.Tracer(g) Dim a As New TraceArcCercle(200, 200, 125, 1, 200, Pen) a.Tracer(g)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question' Constructeur de base avec le stylo en supplément
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal stylo As Pen)
Me.New(x, y, rayon, AngleDep, AngleFin)
Me.StyloTrace = stylo
End Sub
' Constructeur avec brosse pour le remplissage
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal brosse As Brush)
Me.New(x, y, rayon, AngleDep, AngleFin)
Me.BrosseFond = brosse
End Sub
' Constructeur avec stylo pour le contour et brosse pour le remplissage
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal stylo As Pen, ByVal brosse As Brush)
Me.New(x, y, rayon, AngleDep, AngleFin, stylo)
Me.BrosseFond = brosse
End Sub<code>
Region " Propriétés " C'est OK
Region " Méthodes " Messages erreurs sur
Protected Sub " CalculerRectangle "
et sur Public Overrides Sub " Tracer "
Region " Méthodes " pas de modif ?
pour appeler le code cela doit ressembler a ceci
<code>Dim Pen As New Pen(Color.Black, 2)
Dim b As New TraceCercle(250, 250, 125, Pen, redBrush)
b.Tracer(g)
Dim a As New TraceArcCercle(200, 200, 125, 1, 200, Pen)
a.Tracer(g)
<code> ' Constructeur de base avec le stylo en supplément
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal stylo As Pen)
Me.New(x, y, rayon, AngleDep, AngleFin)
Me.StyloTrace = stylo
End Sub
' Constructeur avec brosse pour le remplissage
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal brosse As Brush)
Me.New(x, y, rayon, AngleDep, AngleFin)
Me.BrosseFond = brosse
End Sub
' Constructeur avec stylo pour le contour et brosse pour le remplissage
Public Sub New(ByVal x As Integer, ByVal y As Integer, ByVal AngleDep As Single, ByVal AngleFin As Single, ByVal rayon As Integer, ByVal stylo As Pen, ByVal brosse As Brush)
Me.New(x, y, rayon, AngleDep, AngleFin, stylo)
Me.BrosseFond = brosse
End Sub<code>
<code><code>Dim Pen As New Pen(Color.Black, 2)</code>
Dim b As New TraceCercle(250, 250, 125, Pen, redBrush)
b.Tracer(g)
Dim a As New TraceArcCercle(200, 200, 125, 1, 200, Pen)
a.Tracer(g)