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