Ville prøve at lave et speedometer til bil, men har ingen anelse om hvordan jeg gør. Har ledt lidt efter en guide til sin/cos ur, men har kun fundet til VB6... Er der nogen der kan hjælpe med at lave analoge visere???
Med version 7 af TeamShare tager Lector næste skridt og bygger en platform for AI-agenter, der i højere grad kan følge medarbejderen gennem hele arbejdsprocessen.
Imports System Imports System.Drawing Imports System.Windows.Forms
Public Class MainForm Inherits Form Private Const MAX_SPEED As Integer = 200 Private speed As Integer Private speedshow As PictureBox Private up As Button Private down As Button Public Sub New() speed = 0 speedshow = New PictureBox() up = New Button() down = New Button() SuspendLayout() speedshow.Location = New Point(50, 50) speedshow.Size = New Size(300, 300) speedshow.BorderStyle = BorderStyle.FixedSingle AddHandler speedshow.Paint, AddressOf ShowPaint up.Location = New Point(50, 400) up.Size = New Size(150, 50) up.Text = "Speed up" AddHandler up.Click, AddressOf UpClick down.Location = New Point(200, 400) down.Size = New Size(150, 50) down.Text = "Speed down" AddHandler down.Click, AddressOf DownClick ClientSize = New Size(400, 500) Controls.Add(speedshow) Controls.Add(up) Controls.Add(down) Text = "Speedometer" ResumeLayout(False) End Sub Private Sub UpClick(sender As Object, e As EventArgs) speed = Math.Min(MAX_SPEED, speed + 10) speedshow.Invalidate() End Sub Private Sub DownClick(sender As Object, e As EventArgs) speed = Math.Max(0, speed - 10) speedshow.Invalidate() End Sub Private Sub ShowPaint(sender As Object, e As PaintEventArgs) e.Graphics.FillPie(New SolidBrush(Color.Gray), 25, 100, 250, 250, 180, 180) e.Graphics.DrawLine(New Pen(Color.Red, 5), 150, 225, CSng(150 + 125 * Math.Cos(speed * Math.PI / MAX_SPEED)), CSng(225 - 125 * Math.Sin(speed * Math.PI / MAX_SPEED))) End Sub <STAThread> _ Public Shared Sub Main(args As String()) Application.Run(New MainForm()) End Sub End Class
Har fået lavet dette modul: Skrevet til vb6, har prøvet at rette til vb2010. Så der er nok fejl i... ################################################ Module Module1 Public Structure POINT Friend X As Object Friend Y As Object
End Structure
Public P As POINT
Public tSine(3599) As Single Public tCoSine(3599) As Single
Public Sub LoadTables() Dim i As Long
For i = 0 To 3599 tSine(i) = Math.Sin(D2R(i / 10)) tCoSine(i) = Math.Cos(D2R(i / 10)) Next i End Sub
Public Function Sine(ByVal Angle As Long) As Single If Angle < 0 Then Angle = 360 + (Angle Mod 360) If Angle > 359 Then Angle = Angle Mod 360
Sine = tSine(Angle) End Function
Public Function CoSine(ByVal Angle As Long) As Single If Angle < 0 Then Angle = 360 + (Angle Mod 360) If Angle > 359 Then Angle = Angle Mod 360
CoSine = tCoSine(Angle) End Function
Public Function D2R(ByVal Angle As Single) As Single D2R = Angle / 180 * Math.PI End Function
Public Function RotatePoint(ByRef pPoint As POINT, ByRef pOrigin As POINT, ByVal Degrees As Single) As POINT RotatePoint.X = pOrigin.X + CoSine(Degrees) * (pPoint.X - pOrigin.X) - Sine(Degrees) * (pPoint.Y - pOrigin.Y) RotatePoint.Y = pOrigin.Y + Sine(Degrees) * (pPoint.X - pOrigin.X) + CoSine(Degrees) * (pPoint.Y - pOrigin.Y) End Function
End Module ################################################
Så står der i guiden: Hvordan går jeg det ??? ################################################
Create a function called LoadTables, and add this:
Public Sub LoadTables() Dim i As Long
For i = 0 To 3599 tSine(i) = Sin(D2R(i / 10)) tCoSine(i) = Cos(D2R(i / 10)) Next i End Sub ################################################
Og så her til sidst ;) Hvordan bruger jeg så denne formel :P
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.