29-08-13, 05:46 AM
29-08-13, 11:23 AM
هذا مثال منقول يحتوي على دالة رسم المقطع الدائري
ضع Command وPictureBox ثم ضع هذا الكود
وهذه النتيجة
ضع Command وPictureBox ثم ضع هذا الكود
كود :
Option Explicit
Private Sub Command1_Click()
Call DrawPiePiece(Picture1, 100, 100, 60, 0.001, 36, QBColor(9), QBColor(9))
Call DrawPiePiece(Picture1, 100, 100, 60, 36, 55, QBColor(10), QBColor(10))
Call DrawPiePiece(Picture1, 100, 100, 60, 55, 75, QBColor(11), QBColor(11))
Call DrawPiePiece(Picture1, 100, 100, 60, 75, 99.999, QBColor(12), QBColor(12))
Call DrawPiePiece(Picture1, 250, 100, 60, 0.001, 36, vbBlack, QBColor(9))
Call DrawPiePiece(Picture1, 250, 100, 60, 36, 55, vbBlack, QBColor(10))
Call DrawPiePiece(Picture1, 250, 100, 60, 55, 75, vbBlack, QBColor(11))
Call DrawPiePiece(Picture1, 250, 100, 60, 75, 99.999, vbBlack, QBColor(12))
End Sub
Public Sub DrawPiePiece(pic As PictureBox, x As Integer, y As Integer, radius As Integer, fStart As Double, fEnd As Double, lineColor As Long, fillColor As Long)
Const PI As Double = 3.14159265359
pic.ScaleMode = vbPixels
Dim CircleEnd As Double
CircleEnd = -2 * PI
pic.fillColor = fillColor
pic.FillStyle = 0
Dim dStart As Double
Dim dEnd As Double
dStart = fStart * (CircleEnd / 100)
dEnd = fEnd * (CircleEnd / 100)
pic.Circle (x, y), radius, lineColor, dStart, dEnd
End Sub
وهذه النتيجة
29-08-13, 05:43 PM
و كيف نحدد زاوية او مقدار كل قطاع دائري
29-08-13, 05:56 PM
النسبة المئوية هي اللي باللون الأحمر (وعدلت الدالة عشان تتلافى مشكلة تطابق الصفر وال100 على الدائرة)
[COLOR="#FF0000"]تلاحظ ان الجزء التالي يبدأ من نهاية اللي قبله
[/COLOR]
[COLOR="#FF0000"]تلاحظ ان الجزء التالي يبدأ من نهاية اللي قبله
[/COLOR]
كود :
Option Explicit
Private Sub Command1_Click()
Call DrawPiePiece(Picture1, 100, 100, 60, [color=#ff0000]0[/color], [color=#ff0000]36[/color], QBColor(9), QBColor(9))
Call DrawPiePiece(Picture1, 100, 100, 60, [color=#ff0000]36[/color], [color=#ff0000]55[/color], QBColor(10), QBColor(10))
Call DrawPiePiece(Picture1, 100, 100, 60, [color=#ff0000]55[/color], [color=#ff0000]75[/color], QBColor(11), QBColor(11))
Call DrawPiePiece(Picture1, 100, 100, 60, [color=#ff0000]75[/color], [color=#ff0000]100[/color], QBColor(12), QBColor(12))
Call DrawPiePiece(Picture1, 250, 100, 60, [color=#ff0000]0[/color], [color=#ff0000]36[/color], vbBlack, QBColor(9))
Call DrawPiePiece(Picture1, 250, 100, 60, [color=#ff0000]36[/color], [color=#ff0000]55[/color], vbBlack, QBColor(10))
Call DrawPiePiece(Picture1, 250, 100, 60, [color=#ff0000]55[/color], [color=#ff0000]75[/color], vbBlack, QBColor(11))
Call DrawPiePiece(Picture1, 250, 100, 60, [color=#ff0000]75[/color], [color=#ff0000]100[/color], vbBlack, QBColor(12))
End Sub
Public Sub DrawPiePiece(pic As PictureBox, x As Integer, y As Integer, radius As Integer, [color=#ff0000]fStart [/color]As Double, [color=#ff0000]fEnd [/color]As Double, lineColor As Long, fillColor As Long)
If fStart=0 Then fStart= 0.001
If fStart=100 Then fStart= 99.999
If fEnd=0 Then fEnd= 0.001
If fEnd=100 Then fEnd= 99.999
Const PI As Double = 3.14159265359
pic.ScaleMode = vbPixels
Dim CircleEnd As Double
CircleEnd = -2 * PI
pic.fillColor = fillColor
pic.FillStyle = 0
Dim dStart As Double
Dim dEnd As Double
dStart = fStart * (CircleEnd / 100)
dEnd = fEnd * (CircleEnd / 100)
pic.Circle (x, y), radius, lineColor, dStart, dEnd
End Sub
29-08-13, 06:54 PM
شكرا جزيلا بس سؤال أخير اللون الشفاف او بلا لون شو رقمه في QBColor(9)
29-08-13, 07:10 PM
asto كتب :شكرا جزيلا بس سؤال أخير اللون الشفاف او بلا لون شو رقمه في QBColor(9)
عشان اللون الشفاف قمت بتعديل الدالة (خلي لون التعبئة fillColor يساوي (-1) يعني ناقص واحد)
كود :
Option Explicit
Private Sub Command1_Click()
Call DrawPiePiece(Picture1, 100, 100, 60, 0, 36, QBColor(9), QBColor(9))
Call DrawPiePiece(Picture1, 100, 100, 60, 36, 55, QBColor(10), QBColor(10))
Call DrawPiePiece(Picture1, 100, 100, 60, 55, 75, QBColor(11), [color=#FF0000][b]-1[/b][/color])
Call DrawPiePiece(Picture1, 100, 100, 60, 75, 100, QBColor(12), QBColor(12))
Call DrawPiePiece(Picture1, 250, 100, 60, 0, 36, vbBlack, QBColor(9))
Call DrawPiePiece(Picture1, 250, 100, 60, 36, 55, vbBlack, QBColor(10))
Call DrawPiePiece(Picture1, 250, 100, 60, 55, 75, vbBlack, [b][color=#FF0000]-1[/color][/b])
Call DrawPiePiece(Picture1, 250, 100, 60, 75, 100, vbBlack, QBColor(12))
End Sub
Public Sub DrawPiePiece(pic As PictureBox, x As Integer, y As Integer, radius As Integer, fStart As Double, fEnd As Double, lineColor As Long, fillColor As Long)
If fStart = 0 Then fStart = 0.001
If fStart = 100 Then fStart = 99.999
If fEnd = 0 Then fEnd = 0.001
If fEnd = 100 Then fEnd = 99.999
Const PI As Double = 3.14159265359
pic.ScaleMode = vbPixels
Dim CircleEnd As Double
CircleEnd = -2 * PI
If fillColor = -1 Then
pic.FillStyle = 1
Else
pic.FillStyle = 0
pic.fillColor = fillColor
End If
Dim dStart As Double
Dim dEnd As Double
dStart = fStart * (CircleEnd / 100)
dEnd = fEnd * (CircleEnd / 100)
pic.Circle (x, y), radius, lineColor, dStart, dEnd
End Sub
30-08-13, 01:19 AM
هل يمكن رسم الشكل على الفورم مباشرة او طريقة اذا ما نقلت عنصرا ما و ليكن تكست بوكس و ضعته فوقها يظهر فوق الصورة