تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
ضغط حجم النص
#1
Question 
أخواني الأفاضل

لو تكرمتم أحتاج كود يضغط حجم النص الموجود في مربع نص ليتلاءم مع عرض هذا المربع ويظهر بشكل كامل وذلك بأسلوبين:
الأول: في حال مربع النص مكون من سطر واحد فقط (fit in one line only)
الثاني: في حال مربع النص مكون من سطرين فقط (fit & wrap in two lines only)
وعلى أن يكون الحد الأقصى لحجم الخط يساوي 11

أرجو منكم الإفادة إخواني جزاكم الله خيراً

مع خالص الشكر والتقدير
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}}
تم الشكر بواسطة:
#2
السلام عليكم

أخي الكريم

سؤالك غير واضح...
أرجو أن تقوم بتوضيح الفكرة أكثر وحبذا لو أرفقت بعض الصور إن استطعت...
الرد }}}}
تم الشكر بواسطة:
#3
أخي العزيز
الفكرة أن لدي مربعي نص حجم الخط فيهما يساوي 11 كحد أقصى (أي ان النص بحالته الطبيعية يكون بحجم خط مساو 11)
أحدهما له خاصية سطر واحد فقط ما أريده هو أن يظهر فيه النص كاملاً مهما كان طويلاً أي أن يتقلص طول النص ليتناسب مع عرض مربع النص
أما المربع الثاني فهو نفس الأول مع اختلاف أنه يقبل سطرين أي يمكن أن يلتف النص لسطر آخر قبل أن يتقلص إذا كان أطول من عرض هذا المربع

أرجو أن أكون قد أوضحت الفكرة

ربما الحل يكون بتغيير حجم الخط تدريجيا إلى أن يتناسب مع حجم مربع النص لكن ليس لدي امكانية احتساب وتطبيق ذلك


ولك جزيل الشكر
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}}
تم الشكر بواسطة:
#4
انا مش متذكر قوي هل هناك خاصية في التكست بوكس تضبط الخط بشكل سهل أم لا

عموما ان لم يكن هذه الخاصية متوفرة سيكون عليك بناء كونترول جديد يتم توريثه من TextBox
حيث هنا انت تحتاج الي ان تحسب Size الخاص ب التكست باستخدام الفونت المستخدم و ذلك ب استخدام TextRenderer.MeasureText و هذه هي الطريقة المستخدمة في رسم Strings و لكي لا تدخل في متاهة كبيرة عليك ان لا ترسم String حيث انك هنا فقط تحتاج الي اعادة ضبط ارتفاع مربع النص بناء علي مقاس String و مربع النص و غالبا سيكون Width الخاص به ثابتا فقط ما سيتغير هو الإرتفاع الخاص به مهما تغير حجم الفونت


عموما أنصحك أن تفكر في حلول أسهل لك حيث كما افهم من كلامك ان عدد الاسطر لن يتعدي سطران و بالتالي و بدلا من ان تستخدم مربع النص تحديدا ربما يمكنك استبداله ب كونترول اخر قد يعطيك نفس الأهداف مثل Label مثلا و ف تلك الحالة سيكون سهلا جدا رسم الاسطر و تحجيم Label ليتناسب مع الأسطر بكل سهولة
الرد }}}}
تم الشكر بواسطة: abuzzouz
#5
أشكرك أخي العزيز على مرورك الكريم
لكن المشكلة أني مقيد بالتكست بوكس حيث أن المستخدم لابد أن يدخل بيانات فيه أما الليبل فلا يستطيع
أنا أتخيل الموضوع كما في خلايا الاكسيل عندما نحدد خاصية fit للنص فيصغر حجمه ولا يتأثر عرض ولا ارتفاع الخلية بكبر أو صغر حجم النص وهذا ما أريده بالضبط
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}}
تم الشكر بواسطة:
#6
ما قلت لك سابقا في كلتا الحالات ما تريده يتحقق فقط في حالة واحدة و هي أن تحسب حجم التكست باستخدام TextRenderer و تبين كونترول تم توريثه من التكست بوكس بيتناسب مع ما تريده

ثم تقوم بعمل Zooming للفونت بمعني انك تحسب مقاس التكست ثم تقسمه أو تضربه في Scale ما لتجعله اصغر قليلا أو تجعله أكبر قليلا و من ثم تقارنه ب عرض التكست بوكس فإن كان اقل أو أكبر تضبطه برمحيا ليتناسب مع أبعاد التكست بوكس و في تلك الحالة أنت لن تحتاج الي تغيير ابعاد التكست بوكس
لكن هناك مشكلة وحيدة هنا وهي أن Font Size في التكست بوكس تقريبا Read Only

عموما مرحليا فيه خاصية اسمها AutoSize لو جعلت قيمتها تساوي True ستحقق لك ما تريده لكنها غالبا ستغير في ابعاد التكست بوكس.

أيضا يمكنك دراسة الكود التالي و التعديل عليه ربما يتناسب مع ما تريد انا كتبته لكي يعطيك فكرة بسيطة عن كيفية التلاعب بحجم الفونت لكنك

Public Class Form1

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
Me.TextBox1.Text = "The Lazy Fox Jumps on the Streets"
End Sub

Public Shared Function ScaleTextBoxFontSize(textBoxSize As Size, textBoxFont As Font, textBoxString As String) As Single
Dim textSize As SizeF = TextRenderer.MeasureText(TextBoxString, textBoxFont)
Return textBoxFont.Size * Math.Min(textBoxSize.Height / textSize.Height, textBoxSize.Width / textSize.Width)
End Function


Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
If Not String.IsNullOrEmpty(TextBox1.Text) Then
Dim originalFontSize As Single = Me.TextBox1.Font.Size
Dim scale As Single = ScaleTextBoxFontSize(Me.TextBox1.Size, Me.TextBox1.Font, Me.TextBox1.Text)
Me.TextBox1.Font = New Font(Me.TextBox1.Font.FontFamily, originalFontSize * scale / 10)

End If
End Sub

End Class
الرد }}}}
تم الشكر بواسطة: abuzzouz
#7
شكرا جزيلاً أخي الكريم
اعذرني خبرتي قليلة وأسعى جاهداً للإستفادة من خبرات أمثالكم

سوف أقوم بتجربة الكود وأخبرك بالنتيجة لاحقاً
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}}
تم الشكر بواسطة:
#8
أخي العزيز silverlight السلام عليكم
قمت بتجربة الكود السابق إلا ان النتيجة لم تكن كما أردت للأسف
لذا اتبعت أسلوب تحديد عدد الأحرف بواسطة Len ومن ثم معايرة هذا العدد مع ما يتناسب من حجم الخط المناسب ليستع النص بكامله في مربع النص

هذا اسلوب بدائي لكني لم أتوصل لما أردته رغم كل المحاولات

شكراً جزيلاً لكم على أية حال
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}}
تم الشكر بواسطة:
#9
اليك اخي الحل اولا في حالة تمدد التكست في سطر واحد
TextBox1.Width = TextBox1.PreferredSize.Width + 5

وكود الاخر في حالة استخدام اكثر من سطر
TextBox2.Multiline = True
TextBox2.WordWrap = False
TextBox2.Height = TextBox1.PreferredHeight


TextBox2.Width = TextBox2.PreferredSize.Width + 5
TextBox2.Height = TextBox2.PreferredSize.Height




ونحن في الخدمة
الرد }}}}
تم الشكر بواسطة: abuzzouz
#10
أشكرك جزيلا أخي nmst70 لمرورك الكريم

سوف أقوم بتجربة الكود واخبرك بالنتيجة

تقبل تحياتي
{ اللهم علمنا ما ينفعنا وانفعنا بما علمتنا إنك أنت العليم الخبير }
الرد }}}}
تم الشكر بواسطة:


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [VB.NET] احتاج كود وضع علامة خلف النص The Light Fire 2 137 27-10-17, 01:52 PM
آخر رد: The Light Fire
Exclamation [VB.NET] جلب النص regex mervandzz 1 109 12-10-17, 08:08 PM
آخر رد: أحمد النجار
  حفظ النص بما فيه حجمه في my sittings visualist2015 1 87 15-09-17, 08:30 PM
آخر رد: سعود
  [سؤال] طريقة الفرز داخل مربع النص abosaleh56 5 280 12-07-17, 10:23 AM
آخر رد: abosaleh56
  [VB.NET] طلب كود جلب النص الي في الصورة A-R 2 232 22-04-17, 03:51 PM
آخر رد: A-R
  مشكلة في عرض النص بالعربي في #Region فقط ali.alfoly 1 243 22-02-17, 02:50 AM
آخر رد: مساعدة
  كيف يمكن تثبيت رقم داخل مربع النص والنموذج فى وضع العرض السيد الجوهري 5 509 28-01-17, 02:25 AM
آخر رد: السيد الجوهري
  كيف يمكن تحريك مربعات النص على التقرير السيد الجوهري 3 400 27-01-17, 11:29 PM
آخر رد: السيد الجوهري
  [سؤال] حفظ النص المكتوب داخل listBox فارس جراح 7 671 15-11-16, 04:00 AM
آخر رد: LoveVb
  دالة لجعل مربع النص لا يقبل حروف atefkhalf2004 6 626 17-09-16, 12:38 AM
آخر رد: أبو عمر

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


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