Hallo zusammen,
ich verwende mein eigenes Bild als Cursor . Hier die Funktion:
Spoiler anzeigen
Das funktioniert problemlos.
Als nächstes wollte ich das Cursorbild drehen lassen, auf Basis von Winkeln die ein Sensor ausspukt. Da habe ich folgende sehr hilfreicher Link hier im Forum gefunden: vb-paradise.de/index.php/Thread/?postID=171927#post171927
Ich habe als Basis den Code von @yeti2078 übernommen.
Spoiler anzeigen
1.Problem: winkel_x zeigt die ganze Zeit über 0, obwohl ich an anderer Stelle (mit dem gleichen Code) Werte ungleich null bekomme.
Kann man double nicht mit single addieren? Die Request-Nachricht habe ich im Form1Load-Event implementiert und die if-Bedingung wird erfüllt(habe Breakpoints gesetzt)
2.Problem: Mit dem Code wird ja das Bild aus den Ressourcen geladen und dann rotiert, wie kann das Cursorbild direkt genommen werden?
Ich danke für Eure Hilfe im Voraus!!
ich verwende mein eigenes Bild als Cursor . Hier die Funktion:
VB.NET-Quellcode
Das funktioniert problemlos.
Als nächstes wollte ich das Cursorbild drehen lassen, auf Basis von Winkeln die ein Sensor ausspukt. Da habe ich folgende sehr hilfreicher Link hier im Forum gefunden: vb-paradise.de/index.php/Thread/?postID=171927#post171927
Ich habe als Basis den Code von @yeti2078 übernommen.
VB.NET-Quellcode
- Imports System.Drawing.Drawing2D
- Imports System.Math
- Public Class Form1
- Private WithEvents t As New Timer
- Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
- 'Dim f2 As Pen = New Pen(Color.BlueViolet, 3)'sorgt nur für einen Pfeil
- Dim winkel As Double = GetAngle()' keine Eingangsparameter
- e.Graphics.TranslateTransform(-155, -155)
- e.Graphics.RotateTransform(-90 + winkel, MatrixOrder.Append)
- e.Graphics.TranslateTransform(155, 155, MatrixOrder.Append)
- e.Graphics.DrawImage(My.Resources.eigenerCursor, New Rectangle(0, 0, 310, 310), New Rectangle(New Point(0, 0), My.Resources.eigenerCursor.Size), GraphicsUnit.Pixel)
- 'e.Graphics.DrawLine(f2, 155, 155, 280, 155)
- 'f2.Dispose()
- End Sub
- Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles t.Tick
- Me.Invalidate()
- End Sub
- Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
- winkel_x = 0
- Me.SetStyle(ControlStyles.AllPaintingInWmPaint Or ControlStyles.OptimizedDoubleBuffer, True)
- t.Interval = 100
- t.Start()
- End Sub
- 'Winkel bestimmen
- Private Function GetAngle() As Double
- If sendenAnSensor = 0 Then ' Senden der Request-Nachricht war erfolgreich
- Dim rMsg As Sensor.FreespaceMessage_Read 'Nachricht die gelesen werden soll definiert
- rMsg.motionEngineOutput.meData = DirectCast(Array.CreateInstance(GetType(Byte), 44), Byte()) 'Array der Struktur motionEngineOutput instanzieren
- Dim daten_Beschleunigung As Sensor.MultiAxisSensor 'Paket in das die Winkelgeschwindigkeiten in x,y,z und w kommen
- Sensor.freespace_util_getAngularVelocity(rMsg.motionEngineOutput, daten_Beschleunigung)
- winkel_x = winkel_x + daten_Beschleunigung.x'daten_Beschleunigung.x ist vom Typ single
- End If
- Return winkel_x
1.Problem: winkel_x zeigt die ganze Zeit über 0, obwohl ich an anderer Stelle (mit dem gleichen Code) Werte ungleich null bekomme.
Kann man double nicht mit single addieren? Die Request-Nachricht habe ich im Form1Load-Event implementiert und die if-Bedingung wird erfüllt(habe Breakpoints gesetzt)
2.Problem: Mit dem Code wird ja das Bild aus den Ressourcen geladen und dann rotiert, wie kann das Cursorbild direkt genommen werden?
Ich danke für Eure Hilfe im Voraus!!