Vous devez créer un UserControl personnalisé et utiliser la peinture même de tirer sur la surface du contrôle. L'événement Paint vous fournit un objet Graphics que vous pouvez utiliser pour dessiner le graphique. La grande chose à savoir, cependant, est que vous aurez besoin d'échanger votre axe Y. Dans les fenêtres, le coin supérieur gauche de l'écran est 0,0 plutôt que le coin inférieur gauche.
Ainsi, par exemple, le code suivant dessinera les axes x et y d'un graphique sur un contorl:
Public Class CartesianGraph
Public Property BottomLeftExtent() As Point
Get
Return _bottomLeftExtent
End Get
Set(ByVal value As Point)
_bottomLeftExtent = value
End Set
End Property
Private _bottomLeftExtent As Point = New Point(-100, -100)
Public Property TopRightExtent() As Point
Get
Return _topRightExtent
End Get
Set(ByVal value As Point)
_topRightExtent = value
End Set
End Property
Private _topRightExtent As Point = New Point(100, 100)
Private Sub CartesianGraph_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
Dim extentHeight As Integer = _topRightExtent.Y - _bottomLeftExtent.Y
Dim extentWidth As Integer = _topRightExtent.X - _bottomLeftExtent.X
If (extentHeight <> 0) And (extentWidth <> 0) Then
If (_bottomLeftExtent.Y <= 0) And (_topRightExtent.Y >= 0) Then
Dim xAxis As Integer = e.ClipRectangle.Height - (_bottomLeftExtent.Y * -1 * e.ClipRectangle.Height \ extentHeight)
e.Graphics.DrawLine(New Pen(ForeColor), 0, xAxis, e.ClipRectangle.Width, xAxis)
End If
If (_bottomLeftExtent.X <= 0) And (_topRightExtent.X >= 0) Then
Dim yAxis As Integer = e.ClipRectangle.Width * _bottomLeftExtent.X * -1 \ extentWidth
e.Graphics.DrawLine(New Pen(ForeColor), yAxis, 0, yAxis, e.ClipRectangle.Height)
End If
End If
End Sub
End Class
Le mot "cartésienne" ne vous aidera pas dans votre recherche. il suffit d'utiliser le terme "tracé x-y". Le cartésien est implicite et rarement mentionné. Il y a beaucoup d'exemples si vous le google. –
@jaime m'a semblé que votre édition a transformé cela en une question sur les simples diagrammes de dispersion x-y. Je pense que l'OP veut être capable de créer des dessins 2D personnalisés – MarkJ
@user avez-vous besoin de créer des dessins 2D personnalisés, ou simplement un diagramme de dispersion x-y standard? – MarkJ