29-10-19, 06:45 PM
السلام عليكم ورحمة الله وبركاته
احببت ان اضع هذا المقال عن التصميم وهي اداة Progress تشبه بعض التطبيقات الحديثة اشتقيتها من الControl
بصراحة الاداة غير احترافية بالكامل عملتها بوقت قصير جدآ ولكن اهم شي الفكرة بأن لاشي مستحيل
صورة الاداة
لتصميم الاداة قم بإضافة كلاس جديدوضع هذا الكود
الان قم بعمل Build للمشروع ستلاحظ ظهور الاداة كما في الصورة
احببت ان اضع هذا المقال عن التصميم وهي اداة 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 للمشروع ستلاحظ ظهور الاداة كما في الصورة