14-10-17, 02:02 PM
(آخر تعديل لهذه المشاركة : 14-10-17, 02:19 PM {2} بواسطة silverlight.)
من الأشياء التي لاخظنها هنا في الموقع
هي معاناة بعض المبرمجين في تغيير اتجاه عملية الرسم خاصة في عملية الطباعة من اليمين لليسار و العكس
ومثالا علي ذلك رسم مستطيل إما علي يمين الصفحة أو علي يسار صفحة الطباعة تخديدا
الدالة التالية سوف تؤدي الهدف المطلوب في تغيير اتجاه عملية الرسم و الدالة ممكن تطويرها و كتابتها بطرق أخري مختلفة
مثال علي استخدام الدالة
وهنا سوف أرسم علي الفورم مباشرة و ليس علي صفحة الطباعة
الكود يوضح كيف ترسم تكست بناء علي الاتجاه أيضا
لاجظ في الكود التالي ستجد أن المستطيل يرسم نفسه بناءا علي خاصية RightToLeft الخاصة بالفورم
أتمني أن يكون الكود مفيدا للبعض منكم
تقبلوا تحياتي
هي معاناة بعض المبرمجين في تغيير اتجاه عملية الرسم خاصة في عملية الطباعة من اليمين لليسار و العكس
ومثالا علي ذلك رسم مستطيل إما علي يمين الصفحة أو علي يسار صفحة الطباعة تخديدا
الدالة التالية سوف تؤدي الهدف المطلوب في تغيير اتجاه عملية الرسم و الدالة ممكن تطويرها و كتابتها بطرق أخري مختلفة
PHP كود :
Public Function AlignRectangle(rect As Rectangle, containerRect As Rectangle, isRightToLeft As Boolean) As Rectangle
If isRightToLeft Then
rect.X = containerRect.Right + containerRect.Left - rect.Width - rect.X
Else
rect.X = containerRect.Left + rect.X
End If
Return rect
End Function
مثال علي استخدام الدالة
وهنا سوف أرسم علي الفورم مباشرة و ليس علي صفحة الطباعة
الكود يوضح كيف ترسم تكست بناء علي الاتجاه أيضا
لاجظ في الكود التالي ستجد أن المستطيل يرسم نفسه بناءا علي خاصية RightToLeft الخاصة بالفورم
PHP كود :
Public Class Form1
Public Function AlignRectangle(rect As Rectangle, containerRect As Rectangle, isRightToLeft As Boolean) As Rectangle
If isRightToLeft Then
rect.X = containerRect.Right + containerRect.Left - rect.Width - rect.X
Else
rect.X = containerRect.Left + rect.X
End If
Return rect
End Function
Protected Overrides Sub OnPaint(e As PaintEventArgs)
MyBase.OnPaint(e)
Dim r As Rectangle = New Rectangle(0, 0, 100, 30)
Dim containerRect As Rectangle = Me.ClientRectangle
Dim rect As Rectangle = AlignRectangle(r, containerRect, Me.RightToLeft)
Using sb As New SolidBrush(Color.Red)
e.Graphics.FillRectangle(sb, rect)
If Not MyBase.Text Is Nothing Then
Dim g As Graphics = e.Graphics
Dim txtSize As SizeF = g.MeasureString(MyBase.Text, MyBase.Font)
Dim y As Integer = (rect.Top + rect.Bottom - CInt(txtSize.Height)) / 2
Dim x As Integer = (rect.Right + rect.Left - CInt(txtSize.Width)) / 2
Dim txtBrush As New SolidBrush(MyBase.ForeColor)
g.DrawString(MyBase.Text, MyBase.Font, txtBrush, x, y)
End If
End Using
End Sub
End Class
أتمني أن يكون الكود مفيدا للبعض منكم
تقبلوا تحياتي
Retired