تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] كيف يمكن عمل شريط تقدم مثل هذا
#2
الكود أدناه عبارة عن Progress Indicator بسيط جدا و إن شاء الله يفي بإحتياجاتك.

كيف تستخدم الكود من داخل مشروعك:

1- افتح مشروع جديد ثم أضف الكود التالي له

2- قم بعمل build ثم اضف الكونترول الي الفورم

كود :
Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Drawing2D

Namespace RiverNile

    '****************************************************************************************'
    ' Module Name:  RiverNile.Indicator
    ' Project:      ProgressIndicatorControl
    ' Copyright (c) RiverNile.Net.
    ' All other rights reserved. silverlight1212@yahoo.com
    ' The sample demonstrates how to buidl a simple progress indicator using backbufferd image
    '
    '
    ' This source is subject to the Public License.
    ' Follow my blog for future enhancement
    '
    '
    ' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
    ' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF
    ' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
    '****************************************************************************************'
    Public Class Indicator
        Inherits Control

        Private _value As Long
        Private _maximum As Long = 100

        Public Sub New()
            Me.Size = New Size(100, 100)
        End Sub

        Public Property Value() As Long
            Get
                Return _value
            End Get
            Set(value As Long)
                If value > _maximum Then value = _maximum
                _value = value
                Invalidate()
            End Set
        End Property

        Public Property Maximum As Long
            Get
                Return _maximum
            End Get
            Set(value As Long)
                If value < 1 Then value = 1
                _maximum = value
                Invalidate()
            End Set
        End Property

        ''' <summary>
        '''Not Applicaple, as buffered image will be handled by the code.
        ''' </summary>
        ''' <param name="pevent"></param>
        ''' <remarks></remarks>
        Protected Overrides Sub OnPaintBackground(pevent As PaintEventArgs)
            'MyBase.OnPaintBackground(pevent)
        End Sub

        Protected Overrides Sub OnPaint(e As PaintEventArgs)
            MyBase.OnPaint(e)

            BufferDrawing.DrawProgressIndicator(e.Graphics, Me.Width, Me.Height, ControlPaint.Dark(Me.BackColor), Me.BackColor, 2, Me._maximum, Me._value, Me.Font)
        End Sub

    End Class ' Indicator

    Public NotInheritable Class BufferDrawing

        Friend Shared Sub DrawProgressIndicator(gr As Graphics, imgWidth As Integer, _
                                     imgHeight As Integer, indicatorColor As Color, _
                                     indicatorBackcolor As Color, thick As Integer, _
                                     maxValue As Long, indicatorValue As Long, textFont As Font)


            Using bmp As New Bitmap(imgWidth, imgHeight)
                Using g As Graphics = Graphics.FromImage(bmp)
                    g.SmoothingMode = SmoothingMode.AntiAlias
                    g.SmoothingMode = SmoothingMode.HighQuality
                    g.Clear(indicatorBackcolor)

                    Using sb As New SolidBrush(indicatorColor)
                        Using indicatorPen As New Pen(sb, thick)
                            indicatorPen.StartCap = LineCap.Round
                            indicatorPen.EndCap = LineCap.Round
                            g.DrawArc(indicatorPen, CInt(thick / 2), CInt(thick / 2), imgWidth - thick - 1, imgHeight - thick - 1, 180, CInt((360 / maxValue) * indicatorValue))
                        End Using
                    End Using

                    Dim indicatorString As SizeF = g.MeasureString(CStr(CInt((100 / maxValue) * indicatorValue)), textFont)
                    g.DrawString(CStr(CInt((100 / maxValue) * indicatorValue)), textFont, Brushes.Black, CInt(imgWidth / 2 - indicatorString.Width / 2), CInt(imgHeight / 2 - indicatorString.Height / 2))
                    gr.DrawImage(bmp, 0, 0)
                End Using
            End Using

        End Sub

    End Class ' BufferDrawing

End Namespace ' RiverNile
3- اضف Timer الي الفورم ثم اكتب الكود بالشكل التالي

كود :
Public Class Form1
    Private Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
        Indicator1.Value += 1
        Indicator1.Invalidate()
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        Timer1.Enabled = True
        Timer1.Start()
    End Sub

End Class
الرد }}}


الردود في هذا الموضوع
RE: كيف يمكن عمل شريط تقدم مثل هذا - بواسطة silverlight - 13-05-14, 08:15 AM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  كيف يمكن تصدير ascx كملف dll justforit 1 136 06-12-25, 12:33 AM
آخر رد: salamandal
  كيف يمكن تحريك الفورم بأستخدام زر heem1986 2 587 30-03-25, 01:58 AM
آخر رد: heem1986
  كيف يمكن تحويل ملف تنفيذى الى فيجوال بيسك 2010 walkady 2 782 07-02-25, 07:57 PM
آخر رد: الورد2
  كيف يمكن أشاء أسكربت لقاعدة بيانات sql heem1986 3 418 29-10-24, 08:37 PM
آخر رد: aliday03
  أسرع طريقة يمكن بها نقل جدول Table من قاعدة بيانات على النت إلى أخرى محلية mmaalmesry 2 595 19-10-24, 09:26 PM
آخر رد: mmaalmesry
  كيف يمكن اضافة عناصر للكومبوبوكس اثناء تشغيل البرنامج عن طريق المستخدم haithammoftah 3 2,164 30-09-24, 12:52 AM
آخر رد: asmarsou
  ماهيه المواقع التي يمكن رفع ملفاتك عليها مدفوعه او مجانيه .. ackore 0 252 15-08-24, 11:49 PM
آخر رد: ackore
  هل يمكن جعل عناوين الهيدر بشكل عمودي مصمم هاوي 2 564 16-04-24, 03:59 AM
آخر رد: مصمم هاوي
  [سؤال] أرغب في شريط ضبط الخطوط في أداة RichTextBox والكود كما بالصورة Mostchar 1 388 02-04-24, 01:01 AM
آخر رد: justforit
Exclamation [سؤال] كيف يمكن الغاء السوال عند الكتابة على ملف موجود dell 0 306 19-03-24, 01:23 AM
آخر رد: dell

التنقل السريع :


يقوم بقرائة الموضوع: بالاضافة الى ( 1 ) ضيف كريم