منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : Progress الدائرية
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
السلام عليكم ورحمة الله وبركاته

احببت ان اضع هذا المقال عن التصميم وهي اداة Progress تشبه بعض التطبيقات الحديثة اشتقيتها من الControl
بصراحة الاداة غير احترافية بالكامل عملتها بوقت قصير جدآ  ولكن اهم شي الفكرة بأن لاشي مستحيل

صورة الاداة




لتصميم الاداة قم بإضافة كلاس جديدوضع هذا الكود




كود :
Public Class NewProgress
   Inherits Control
   Public Shared ObjectCount As Integer = 0


   Private Sub NewProgress_Paint(ByVal sender As Object, ByVal e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
       Dim GRP As New Drawing2D.GraphicsPath
       GRP.AddEllipse(2, 2, Me.Width - 4, Me.Height - 4)
       e.Graphics.DrawPath(New Pen(Color.Azure, 4), GRP)
       Me.Region = New Region(GRP)
       e.Graphics.SmoothingMode = Drawing2D.SmoothingMode.AntiAlias
       Using sf As New StringFormat With {.Alignment = StringAlignment.Center, .LineAlignment = StringAlignment.Center}
           e.Graphics.DrawString(Value & "%", Font, New SolidBrush(ForeColor), ClientRectangle, sf)
       End Using
       If Value <> 0 Then
           Dim P As Short = Val(Value / 100) * 360
           e.Graphics.DrawArc(New Pen(Color.Brown, 5), 2, 2, Me.Width - 4, Me.Height - 4, 270, P)
       End If
       GRP.Dispose()
   End Sub

   Dim B As Short = 0
   <System.ComponentModel.Description("Value of Progress")> Property Value() As Short
       Get
           Return B
       End Get
       Set(ByVal value As Short)
           If value > 100 Then
               value = 100
           End If
           B = value
           Invalidate()
       End Set
   End Property

   Private Sub NewProgress_Resize(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Resize
       Width = Height
   End Sub

   Public Sub New()
       ObjectCount += 1
       ForeColor = Color.Black
       Size = New Size(60, 60)
   End Sub

   Protected Overrides Sub Finalize()
       MyBase.Finalize()
       ObjectCount -= 1
   End Sub
End Class






الان قم بعمل Build للمشروع ستلاحظ ظهور الاداة كما في الصورة

بارك الله فيك و جزاك الله عنا كل خير .