PDA

View Full Version : راست چین کردن متن در تابع DrawString



mahdi13681128
شنبه 06 خرداد 1391, 15:11 عصر
سلام
می خواستم بدونم چطور می شه متنی که توسط DrawString به عکس تبدیل می شه رو از چپ چین(حالت پیش فرض) به راست چین تبدیل کرد؟

فرید نجفلو
شنبه 06 خرداد 1391, 15:21 عصر
سلام
نظرتون درباره این تابع چیه:

''' <summary>
''' رسم متن در تصویر
''' </summary>
''' <param name="Grph">شئی گرافیک</param>
''' <param name="TextToDrow">متن جهت رسم</param>
''' <param name="DrawFont">فونت متن</param>
''' <param name="Location">مختصات رسم</param>
''' <param name="IsRightToLeft">تعیین رسم از راست به چپ(فارسی)</param>
''' <param name="ForeBrush">نوع قلمو</param>
''' <remarks></remarks>
Public Shared Sub DrawTextToGraph(ByRef Grph As Graphics, TextToDrow As String, DrawFont As Font, Location As PointF, _
Optional IsRightToLeft As Boolean = True, Optional ForeBrush As Brush = Nothing)
Dim textSize As SizeF
If ForeBrush Is Nothing Then ForeBrush = Brushes.Red
textSize = Grph.MeasureString(TextToDrow, DrawFont)
Grph.TranslateTransform(Location.X, Location.Y)

Dim strfrm As New StringFormat
If IsRightToLeft Then
strfrm.Alignment = StringAlignment.Far
Else
strfrm.Alignment = StringAlignment.Near
End If
Grph.DrawString(TextToDrow, DrawFont, ForeBrush, 0, 0, strfrm)
End Sub

mahdi13681128
یک شنبه 07 خرداد 1391, 09:13 صبح
خیلی ممنون
خیلی خوب بود .تا حالا تو این سایت کسی جوابی به این کاملی و با توضیحات به من نداده بود.
می تونین در مورد far و near بیشتر توضیح دهید.آیا far باعث می شود متن از سمت چپ مرتب شود یا از جهت مخالف مرتب شود؟

فرید نجفلو
یک شنبه 07 خرداد 1391, 12:18 عصر
سلام
میشه گفت این دو کلمه نسبت به زبان انگلیسی معنی پیدا می کنن Far (دور) یعنی متن از محل اصلی خودش (که در انگلیسی چپ هست) فاصله می گیره (دور تر نوشته می شه) و Near (نزدیک) هم که دیگه معلومه

mahdi13681128
یک شنبه 07 خرداد 1391, 15:48 عصر
سلام
می تونی کمی در مورد آپشن IsRightToLeft هم توضیح دهی؟ تا جایی که من فهمیدم این پارامتر همواره true است و و اگر متن چپ چین باشد مقدار آن false نمی شود.
خیلی ممنون

فرید نجفلو
یک شنبه 07 خرداد 1391, 16:49 عصر
سلام
ببینید من این پارامتر رو گذاشتم تا شما به تابع بگید که می خواید متن چپ چین باشه یا راست چین
چون اغلب ما راست چین استفاده می کنیم من پیشفرض رو True گذاشتم تا بتونید با سرعت بیشتر (بدون ارسال این پارامتر) کد نویسی کنید و فقطز مانی ارسال این پارامتر لازامی می شه که قصد چپ چین کردن دارید
پس این پارامتر همواره True نیست و اگه شما False رو به تابع پس کنید مت چپ چین می شه
و محل تاثیر این پارامتر این قسمت هست:


If IsRightToLeft Then
strfrm.Alignment = StringAlignment.Far
Else
strfrm.Alignment = StringAlignment.Near
End If