Hallo liebe Foristen, dieses Board hat zwar anscheinend nichts mit VB.net zu tun , dennoch ist das php resource board gewohnheitsmäßig das einzige Board was mir immer eine Antwort auf meine Fragen liefern kann. Und zwar handelt es sich um eine Analog uhr die ich gerne verstehen würde. Ich würde gerne wissen WAS GENAU die translateTransform funktionen nach der zweiten "Next wi" anweisung tut. Ich wäre euch sehr Dankbar wenn mir einer dabei helfen könnte.
Vielen Dank im VOrraus
Vielen Dank im VOrraus
Code:
Imports System.Drawing.Drawing2D
Public Class Analoguhr
Inherits System.Windows.Forms.Form
#Region " Vom Windows Form Designer generierter Code "
Public Sub New()
MyBase.New()
' Dieser Aufruf ist für den Windows Form-Designer erforderlich.
InitializeComponent()
' Initialisierungen nach dem Aufruf InitializeComponent() hinzufügen
End Sub
' Die Form überschreibt den Löschvorgang der Basisklasse, um Komponenten zu bereinigen.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
' Für Windows Form-Designer erforderlich
Private components As System.ComponentModel.IContainer
'HINWEIS: Die folgende Prozedur ist für den Windows Form-Designer erforderlich
'Sie kann mit dem Windows Form-Designer modifiziert werden.
'Verwenden Sie nicht den Code-Editor zur Bearbeitung.
Friend WithEvents Timer1 As System.Windows.Forms.Timer
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.components = New System.ComponentModel.Container()
Me.Timer1 = New System.Windows.Forms.Timer(Me.components)
Me.PictureBox1 = New System.Windows.Forms.PictureBox()
Me.SuspendLayout()
'
'Timer1
'
'
'PictureBox1
'
Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.Fixed3D
Me.PictureBox1.Location = New System.Drawing.Point(16, 16)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(264, 232)
Me.PictureBox1.TabIndex = 0
Me.PictureBox1.TabStop = False
'
'Analoguhr
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(328, 301)
Me.Controls.AddRange(New System.Windows.Forms.Control() {Me.PictureBox1})
Me.Name = "Analoguhr"
Me.Text = "Analoguhr von Niklas Steinmeier"
Me.ResumeLayout(False)
End Sub
#End Region
Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
Me.Text = DateTime.Now
Dim bmp As Bitmap = New Bitmap(310, 310)
Dim g As Graphics = Graphics.FromImage(bmp) 'G platz zum Zeichnen
Dim gFont As New Font("Comic Sans MS", 20, FontStyle.Bold) ' schriftart Stundenzahlen
Dim f1 As Pen = New Pen(Color.Gold, 10) ' farbe minutenzeiger
Dim f2 As Pen = New Pen(Color.Gold, 3) ' farbe sekundenzeiger
Dim x, y, wi, b As Int32
Dim h As Int32 = DateTime.Now.Hour ' aktuelle Stunde
Dim m As Int32 = DateTime.Now.Minute ' aktuelle Minute
Dim s As Int32 = DateTime.Now.Second ' aktuelle Sekunde
f1.EndCap = LineCap.Triangle
f1.StartCap = LineCap.RoundAnchor ' Kreis für den Zeigeranfang
g.SmoothingMode = Drawing2D.SmoothingMode.HighQuality ' antialiasingmodus
g.TextRenderingHint = Drawing.Text.TextRenderingHint.ClearTypeGridFit ' schriftglättung
If h > 12 Then h -= 12 ' 12 Stundenanzeige
g.FillEllipse(Brushes.Black, 1, 1, 308, 308) ' schwarze rand
g.FillEllipse(Brushes.Red, 15, 15, 280, 280) ' roter rand
b = 12
For wi = 90 To 420 Step 30
x = 135 + Math.Cos(wi * Math.PI / 180) * 120 ' Grad in Bogenmaß
y = 140 - Math.Sin(wi * Math.PI / 180) * 120 ' Grad in Bogenmaß
If b = 12 Then x -= 7
g.DrawString(Str(b), gFont, Brushes.Yellow, x, y) ' die Stundenzahlen anzeigen
b -= 1
Next wi
gFont.Dispose()
For wi = 90 To 450 Step 6
x = 154 + Math.Cos(wi * Math.PI / 180) * 135
y = 154 - Math.Sin(wi * Math.PI / 180) * 135
g.FillEllipse(Brushes.Gold, x, y, 3, 3) ' Sekundenpunkte zeichnen
Next wi
g.TranslateTransform(-155, -155)
g.RotateTransform(-90 + h * 30 + (m \ 2), MatrixOrder.Append)
g.TranslateTransform(155, 155, MatrixOrder.Append)
g.DrawLine(f1, 155, 155, 245, 155) ' Stundenzeiger zeichnen
g.ResetTransform()
'.TranslateTransform(-155, -155)
g.RotateTransform(-90 + m * 6 + (s \ 10), MatrixOrder.Append)
g.TranslateTransform(155, 155, MatrixOrder.Append)
f1.Width = 8
g.DrawLine(f1, 155, 155, 280, 155) 'Minutenenzeiger zeichnen
f1.Dispose()
g.ResetTransform()
g.TranslateTransform(-155, -155)
g.RotateTransform(-90 + s * 6, MatrixOrder.Append)
g.TranslateTransform(155, 155, MatrixOrder.Append)
g.DrawLine(f2, 155, 155, 280, 155) ' Sekundenzeiger
f2.Dispose()
g.FillEllipse(Brushes.Red, 147, 147, 16, 16) ' ziffernblatt
PictureBox1.Image = bmp ' nun in die PictureBox
End Sub
Private Sub Form1_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Resize
PictureBox1.Width = Me.Width - 30
PictureBox1.Height = Me.Height - 50
End Sub
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Me.Size = New Size(350, 350)
Me.PictureBox1.Location = New System.Drawing.Point(10, 10)
PictureBox1.SizeMode = PictureBoxSizeMode.StretchImage
Timer1.Enabled = True
Timer1.Interval = 1000
End Sub
End Class

Kommentar