none
Desenhar linhas dentro de um raio de 180* RRS feed

  • Pergunta

  • Gostaria de desenhar linhas dentro de um raio de 180* utilizando Me.CreateGraphics, porém estou sem ideia de como fazer isso

    quarta-feira, 27 de dezembro de 2017 16:31

Respostas

  • O que voce tem que fazer é trabalhar com o sistema de coordenadas polar.

    Para converter polar (r,o) em  cartesiano (x,y) voce tem que usar essa relaçao:

    aqui esta um exemplo de como fazer isso em VB:

    Public Class Form1
    
        Private Mypen As Pen = New Pen(Color.Green, 3)
    
        Private x As Integer
        Private y As Integer
        Private xLoc As Integer
        Private yLoc As Integer
        Private Div As Double = PI * 2 / 250
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            x = PictureBox1.Width / 2
            y = PictureBox1.Height / 2
    
        End Sub
    
        Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            xloc = X - Range * Sin(angle * Div)
            yloc = Y + Range * Cos(angle * Div)
      e.Graphics.DrawRectangle(Mypen, xloc - 1, yloc - 1, 2, 2) 
    
        End Sub


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 27 de dezembro de 2017 18:40
    Moderador

Todas as Respostas

  • Voce pode ser mais claro na sua questao?

    Pelo que eu entendi voce desenha um circulo e quer dividi-lo no meio, é isso?

    Att


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 27 de dezembro de 2017 16:53
    Moderador
  • Seria como a linha de um radar, ela deve andar grau por grau (180 no máximo).

    Porém meu código não se mantém no centro do form

    Public Class Form1
        Dim g As Graphics = Me.CreateGraphics
        Dim i As Integer
        Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
            Dim p As New Pen(Color.Red, 3)
            i = i + 10
            g.DrawLine(p, i, 0, 345, 251)
        End Sub
    End Class
    


    • Editado Tiago.SP quarta-feira, 27 de dezembro de 2017 17:05
    quarta-feira, 27 de dezembro de 2017 17:03
  • O que voce tem que fazer é trabalhar com o sistema de coordenadas polar.

    Para converter polar (r,o) em  cartesiano (x,y) voce tem que usar essa relaçao:

    aqui esta um exemplo de como fazer isso em VB:

    Public Class Form1
    
        Private Mypen As Pen = New Pen(Color.Green, 3)
    
        Private x As Integer
        Private y As Integer
        Private xLoc As Integer
        Private yLoc As Integer
        Private Div As Double = PI * 2 / 250
    
        Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
            x = PictureBox1.Width / 2
            y = PictureBox1.Height / 2
    
        End Sub
    
        Private Sub PictureBox1_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles PictureBox1.Paint
            xloc = X - Range * Sin(angle * Div)
            yloc = Y + Range * Cos(angle * Div)
      e.Graphics.DrawRectangle(Mypen, xloc - 1, yloc - 1, 2, 2) 
    
        End Sub


    William John Adam Trindade
    Analyste-programmeur


    Sogi Informatique ltée
    If you found this post helpful, please "Vote as Helpful". If it actually answered your question, remember to "Mark as Answer". Se achou este post útil, por favor clique em "Votar como útil". Se por acaso respondeu sua dúvida, lembre de "Marcar como Resposta".

    quarta-feira, 27 de dezembro de 2017 18:40
    Moderador