تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
أفكار في الجرافكس AlignRectangle
#1
من الأشياء التي لاخظنها هنا في الموقع
هي معاناة بعض المبرمجين في تغيير اتجاه عملية الرسم خاصة في عملية الطباعة من اليمين لليسار و العكس
ومثالا علي ذلك رسم مستطيل إما علي يمين الصفحة أو علي يسار صفحة الطباعة تخديدا

الدالة التالية سوف تؤدي الهدف المطلوب في تغيير اتجاه عملية الرسم و الدالة ممكن تطويرها و كتابتها بطرق أخري مختلفة

PHP كود :
   Public Function AlignRectangle(rect As RectanglecontainerRect As RectangleisRightToLeft As Boolean) As Rectangle
        If isRightToLeft Then
            rect
.containerRect.Right containerRect.Left rect.Width rect.X
        Else
            rect
.containerRect.Left rect.X
        End 
If
 
       Return rect
    End 
Function 

مثال علي استخدام الدالة
وهنا سوف أرسم علي الفورم مباشرة و ليس علي صفحة الطباعة
الكود يوضح كيف ترسم تكست بناء علي الاتجاه أيضا
لاجظ في الكود التالي ستجد أن المستطيل يرسم نفسه بناءا علي خاصية RightToLeft الخاصة بالفورم

PHP كود :
Public Class Form1

    Public 
Function AlignRectangle(rect As RectanglecontainerRect As RectangleisRightToLeft As Boolean) As Rectangle
        If isRightToLeft Then
            rect
.containerRect.Right containerRect.Left rect.Width rect.X
        Else
            rect
.containerRect.Left rect.X
        End 
If
 
       Return rect
    End 
Function

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

 
       Dim r As Rectangle = New Rectangle(0010030)
 
       Dim containerRect As Rectangle Me.ClientRectangle
        Dim rect 
As Rectangle AlignRectangle(rcontainerRectMe.RightToLeft)

 
       Using sb As New SolidBrush(Color.Red)
 
           e.Graphics.FillRectangle(sbrect)
 
           If Not MyBase.Text Is Nothing Then
                Dim g 
As Graphics e.Graphics
                Dim txtSize 
As SizeF g.MeasureString(MyBase.TextMyBase.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.TextMyBase.FonttxtBrushxy)

 
           End If
 
       End Using

    End Sub

End 
Class 

أتمني أن يكون الكود مفيدا للبعض منكم
تقبلوا تحياتي
Retired
الرد }}}



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


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