none
Grafik (Postionieren) RRS feed

  • Frage

  •  

    Hallo Gemeinde,

     

    würde mir Bitte jemand bei meinem Problem helfen, der sich mir Grafik auskennt.

    Das ganze soll eine Uhr werden.

    Im Code unten habe ich ein Bitmap (160 x 160), die Kreisfläche der Uhr ,

    darauf will ich im Kreis, die Ziffern schreiben, was mir auch grundsätzlich gelingt.

    Bei einem Click auf eine Ziffer, will ich ein Ereignis erhalten.

    Was ich nicht hin bekomme ist, den Radius des Kreises für die Ziffern kleiner zu machen,

    als er jetzt gezeichnet wird. ich erreiche nur, das die Ziffern aus der Mitte wandern.

    Könnte mir jemand ein paar tips geben wie das geht?

    Vielen Dank für Unterstützung,

    Peter

     

     

     

    Dim x1, x2, y1, y2 As Integer
                LastDate = Now

                Dim FaceBit As New Bitmap(FaceBitmap)

                Dim gr As Graphics '= pnlClock.CreateGraphics
                gr = Graphics.FromImage(FaceBit)
                Dim FaceBitWidth As Integer = FaceBit.Width    

                Dim FaceBitHeight As Integer = FaceBit.Height  

                gr.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality               

               Dim TickAmount As Integer
                TickAmount = (Now.Minute * 6) - 90
                x1 = 25
                y1 = 25
                x2 = FaceBitWidth - 50
                y2 = FaceBitHeight - 50
                gr.DrawPie(New Pen(Color.Black, 3), New Rectangle(x1, y1, x2, y2), TickAmount, 1) 'Draw the minute hand

    ...snip...

     For i = 0 To 11
                    Dim sf As New StringFormat()
                    sf.Alignment = StringAlignment.Near
                    sf.LineAlignment = StringAlignment.Near
                   
                    Dim Angle = i * PI / 6
                    x1 = Sin(Angle) * (FaceBitWidth / 2 - 10) + 65  
                    y1 = Cos(Angle + PI) * (FaceBitWidth / 2 - 10) + 65 

                    Dim drawBounds As Rectangle '= target.Bounds
                    drawBounds.Height = 22  '32
                    drawBounds.Width = 35   '45
                    drawBounds.X = x1
                    drawBounds.Y = y1
                    Dim s As String
                    If i = 0 Then
                        s = "12"
                    Else
                        s = i.ToString
                    End If

                    gr.DrawString(s, Label4.Font, New SolidBrush(PMColor), drawBounds, sf)
                Next

     


    Peter
    Montag, 17. Januar 2011 14:33

Antworten

  •  

    Hallo zusammen,

    die Lösung besteht einfach darin, dass ich die Parameter, bzw. des zugrunde liegende Rectangle Objekts,  geblickt habe.

    Gruss Peter


    Peter
    • Als Antwort markiert peter haus Donnerstag, 20. Januar 2011 13:00
    Donnerstag, 20. Januar 2011 12:41

Alle Antworten

  •  

    Danke, inzwischen bin ich dahinter gekommen.

    Frohes schaffen.

    Peter


    Peter
    Montag, 17. Januar 2011 16:41
  • Hallo Peter,

    Danke, inzwischen bin ich dahinter gekommen.

    ein Forum lebt von geben und nehmen. Wäre es daher machbar, dass Du uns an deiner Lösung teilhaben lässt? Das würde anderen User, die evtl. einmal eine ähnliche/gleiche Frage haben, sicherlich helfen. Vielen Dank im Voraus :)

     


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET
    http://www.asp-solutions.de/ - Consulting, Development
    http://www.aspnetzone.de/ - ASP.NET Zone, die ASP.NET Community
    Montag, 17. Januar 2011 17:45
    Moderator
  •  

    Hallo zusammen,

    die Lösung besteht einfach darin, dass ich die Parameter, bzw. des zugrunde liegende Rectangle Objekts,  geblickt habe.

    Gruss Peter


    Peter
    • Als Antwort markiert peter haus Donnerstag, 20. Januar 2011 13:00
    Donnerstag, 20. Januar 2011 12:41