Note that there are some explanatory texts on larger screens.

plurals
  1. POGUI doesn't move accordingly
    primarykey
    data
    text
    <p>i'm trying to display pitch, roll and yaw indications in term of graphic so i build an GUI using user control in visual basic. this is my code for the GUI only. </p> <pre><code>Private g As Graphics Private _roll_angle As Double Public Property roll_angle() As Double Get Return _roll_angle End Get Set(ByVal value As Double) _roll_angle = value Invalidate() End Set End Property Private _pitch_angle As Double Public Property pitch_angle() As Double Get Return _pitch_angle End Get Set(ByVal value As Double) _pitch_angle = value Invalidate() End Set End Property Private Sub ArtificialHorizon_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load End Sub Private Function pitch_to_pix(ByVal pitch As Double) As Integer Return pitch / 35.0 * Me.Height / 2 'Return pitch / 45.0 * Me.Height / 2 End Function Private Sub ArtificialHorizon_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint g = e.Graphics g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality g.Clear(Me.BackColor) Dim sin As Double = Math.Sin(roll_angle / 180 * 3.14) g.ResetTransform() ' g.FillRegion(Brushes.White, New Region(New Rectangle(0, 0, Me.Width, Me.Height))) ' rounded rectangle Dim path As New Drawing2D.GraphicsPath() Dim r As Single = 50 path.AddArc(0, 0, r, r, 180, 90) path.AddArc(Me.Width - r, 0, r, r, 270, 90) path.AddArc(Me.Width - r, Me.Height - r, r, r, 0, 90) path.AddArc(0, Me.Height - r, r, r, 90, 90) 'path.AddEllipse(0, 0, Me.Width, Me.Height) path.CloseFigure() g.SetClip(path) g.TranslateTransform(Me.Width / 2, Me.Height / 2) g.RotateTransform(roll_angle) g.TranslateTransform(0, pitch_to_pix(pitch_angle)) ' chocolate Dim b As New System.Drawing.Drawing2D.LinearGradientBrush(New RectangleF(-Me.Width, 0, Me.Height * 2, Me.Width * 2), Color.FromArgb(255, 219, 140, 21), Color.Brown, Drawing2D.LinearGradientMode.Vertical) g.FillRectangle(b, New RectangleF(-Me.Width * 2, +1, Me.Height * 4, Me.Width * 4)) g.RotateTransform(180) ' color.aqua b = New System.Drawing.Drawing2D.LinearGradientBrush(New RectangleF(-Me.Width, -1, Me.Height * 2, Me.Width * 2), Color.FromArgb(255, 28, 134, 186), Color.DarkBlue, Drawing2D.LinearGradientMode.Vertical) g.FillRectangle(b, New RectangleF(-Me.Width * 2, 0, Me.Height * 4, Me.Width * 4)) g.ResetTransform() Dim w2 As Single = Me.Width / 2 Dim s As Single = Me.Width / 38 g.TranslateTransform(Me.Width / 2, Me.Height / 2) g.RotateTransform(45) g.TranslateTransform(-w2 + s, 0) g.DrawLine(New Pen(Color.White, 2), 0, 0, s * 2, 0) g.TranslateTransform(+w2 - s, 0) g.RotateTransform(15) g.DrawLine(New Pen(Color.White, 2), -w2 + s, 0, -w2 + s * 2, 0) g.RotateTransform(15) g.DrawLine(New Pen(Color.White, 2), -w2 + s, 0, -w2 + s * 2, 0) g.RotateTransform(15) g.DrawLine(New Pen(Color.White, 2), -w2 + s, 0, -w2 + s * 3, 0) 'g.DrawString("0°", New System.Drawing.Font("sans-serif", 9), Brushes.White, -w2 + 40, -4) g.RotateTransform(15) g.DrawLine(New Pen(Color.White, 2), -w2 + s, 0, -w2 + s * 2, 0) g.RotateTransform(15) g.DrawLine(New Pen(Color.White, 2), -w2 + s, 0, -w2 + s * 2, 0) g.RotateTransform(15) g.DrawLine(New Pen(Color.White, 2), -w2 + s, 0, -w2 + s * 3, 0) 'g.DrawString("+45°", New System.Drawing.Font("sans-serif", 9), Brushes.White, -w2 + 40, -4) g.ResetTransform() Dim length As Single = Me.Width / 4 Dim notch As Single = Me.Width / 30 g.TranslateTransform(Me.Width / 2, Me.Height / 2) g.DrawLine(New Pen(Color.White, 3), -length + notch * 2, 0, -notch, 0) g.DrawLine(New Pen(Color.White, 3), notch, 0, length - notch * 2, 0) g.DrawArc(New Pen(Color.White, 3), -notch, -notch, notch * 2, notch * 2, 180, -180) g.ResetTransform() ' driehoekje Dim ww As Single = Me.Width / 38 g.TranslateTransform(Me.Width / 2, Me.Height / 2) g.RotateTransform(-90 + roll_angle) path = New Drawing2D.GraphicsPath() path.AddLine(w2 - ww * 3, 0, w2 - ww * 4, ww) path.AddLine(w2 - ww * 4, -ww, w2 - ww * 4, ww) path.AddLine(w2 - ww * 4, -ww, w2 - ww * 3, 0) g.FillRegion(Brushes.White, New Region(path)) g.DrawLine(New Pen(Color.White, 1), w2 - ww * 3, 0, w2 - ww * 4, ww) g.DrawLine(New Pen(Color.White, 1), w2 - ww * 4, -ww, w2 - ww * 4, ww) g.DrawLine(New Pen(Color.White, 1), w2 - ww * 4, -ww, w2 - ww * 3, 0) g.ResetTransform() g.ResetClip() path = New Drawing2D.GraphicsPath() path.AddPie(New Rectangle(ww * 3, ww * 3, Me.Width - ww * 6, Me.Height - ww * 6), 0, 360) g.SetClip(path) g.TranslateTransform(Me.Width / 2, Me.Height / 2) g.RotateTransform(roll_angle) g.TranslateTransform(0, pitch_to_pix(pitch_angle)) For i As Integer = -80 To 80 Step 10 drawpitchline(g, i) Next i End Sub Private Sub drawpitchline(ByVal g As Graphics, ByVal pitch As Double) Dim w As Single = Me.Width / 8 g.DrawLine(Pens.White, -w, pitch_to_pix(-pitch + 5), w, pitch_to_pix(-pitch + 5)) g.DrawLine(Pens.White, -w * 5 / 3, pitch_to_pix(-pitch), w * 5 / 3, pitch_to_pix(-pitch)) g.DrawString(pitch, Me.Font, Brushes.White, -w * 75 / 30, pitch_to_pix(-pitch) - 5) g.DrawString(pitch, Me.Font, Brushes.White, w * 2, pitch_to_pix(-pitch) - 5) End Sub Private Sub drawrollline(ByVal g As Graphics, ByVal a As Single) Dim w2 As Single = Me.Width / 2 g.RotateTransform(a + 90) g.TranslateTransform(-w2 + 10, 0) g.DrawLine(Pens.White, 0, 0, 20, 0) g.TranslateTransform(10, 5) g.RotateTransform(-a - 90) g.DrawString("" &amp; (a) &amp; "°", New System.Drawing.Font("sans-serif", 9), Brushes.White, 0, 0) g.RotateTransform(+90 + a) g.TranslateTransform(-10, -5) g.TranslateTransform(+w2 - 10, 0) g.RotateTransform(-a - 90) End Sub </code></pre> <p>then i added in a button to give some testing readings. code below </p> <pre><code>Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click AH.roll_angle = 45 AH.pitch_angle = 10 End Sub </code></pre> <p>when the button is clicked, the GUI is supposed to turn/rotate according to the inputs. however, it stays still (btw, code is able to debug thou and the graphic did show up). i believe it's because i did not refer to the AH variable in my painting. can someone pls give me a guide on this?</p> <p>thanks in advance!</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload