직교 좌표계를 Windows 형식으로 만들고 (x, y) 좌표를 그릴 수 있어야합니다.VB.NET 직교 좌표계
어떻게해야합니까? 나는 이미 나의 연구를했지만, 불행하게도 나는 직각 평면이 아니라 "챠트"에만 착륙했다. 당신은 정의의 UserControl을 생성하고 컨트롤의 표면에 그릴 심지어 페인트를 사용한다
직교 좌표계를 Windows 형식으로 만들고 (x, y) 좌표를 그릴 수 있어야합니다.VB.NET 직교 좌표계
어떻게해야합니까? 나는 이미 나의 연구를했지만, 불행하게도 나는 직각 평면이 아니라 "챠트"에만 착륙했다. 당신은 정의의 UserControl을 생성하고 컨트롤의 표면에 그릴 심지어 페인트를 사용한다
... 감사합니다 도움이 될 것입니다 내 문제에 대한
모든 링크 .... Paint 이벤트는 그래프를 그리는 데 사용할 수있는 Graphics 객체를 제공합니다. 그러나 알아야 할 중요한 점은 Y 축을 교체해야한다는 것입니다. 창에서 화면의 왼쪽 상단은 왼쪽 하단보다 0,0입니다. 만약 의 PictureBox 제어를 사용하고 사용 그것에 그릴 수 윈폼에서
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
이 샘플을 제공해 주셔서 감사합니다.하지만이 Paint 이벤트를 처음 접했습니다. 서로 교차하는 간단한 선이이 많은 코드를 사용한다는 것을 알지 못했습니다. 이 Paint 이벤트와 Graphics 객체에 대해 공부하고 이것을 참고로 사용하겠습니다 ... 다시 한번 감사드립니다. –
선 그리기는 쉽습니다. 그것은 모든 생각과 노력을 필요로하는 선이가는 곳을 계산합니다. 예제에서 볼 수 있듯이 그래프의 외부 범위를 설정하는 속성을 제공하므로 코드의 크기를 계산해야합니다. 그래프의 한 점당 화면에 단순한 픽셀 하나가있는 경우 코드가 훨씬 간단 해집니다. –
사용자 지정 사용자 지정 컨트롤이 과도하게 보입니다. Heinzi가 대답 한 것처럼 PictureBox를 그리는 것이 어떻습니까? – MarkJ
:
그래서, 예를 들어 다음의 코드는 CONTORL에서 그래프의 x 및 y 축선을 그리는 것
: 등 DrawLine, DrawEllipse, 같은 프리미티브 다음은 SO 질문은 예를 들어 있습니다 당신은 자동 축 및 라벨을 원하는 경우에 차트 실제로 이동하는 방법,:
은 WPF에서는 유사 캔버스 컨트롤을 사용할 수 있습니다. 사용 사례를 들어, 포인트 차트는 최적의 솔루션처럼 보인다 :
.NET이 차트 라이브러리를 가지고 있지만, 이런 종류의 물건을 몇 가지 오픈 소스 프로젝트가있다 아주 잘. 좌표를 플롯하려면 Zedgraph를 사용하면 비교적 쉽고 유연합니다.
단어를 형성한다 "데카르트의"검색에 도움이되지 않습니다. 그냥 "x-y 플롯"이라는 용어를 사용하십시오. 데카르트는 내재적이며 드물게 언급됩니다. 당신이 google 그것을하는 경우에 많은 예제가 있습니다. –
@jaime이 당신의 편집으로 이것을 간단한 x-y 산점도에 관한 질문으로 바꾸 었습니다. 나는 OP가 사용자 정의 2D 도면을 생성 할 수 있기를 원합니다. – MarkJ
@user 사용자 정의 2D 도면 또는 표준 x-y 산점도를 작성해야합니까? – MarkJ