تقييم الموضوع :
  • 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 لمرورك الكريم

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] حفظ النص المكتوب داخل listBox فارس جراح 7 119 15-11-16, 04:00 AM
آخر رد: LoveVb
  دالة لجعل مربع النص لا يقبل حروف atefkhalf2004 6 144 17-09-16, 12:38 AM
آخر رد: أبو عمر
  [سؤال] النص في اداة RichTextBox soper 3 132 06-09-16, 05:49 PM
آخر رد: soper
  خاصية توزيع النص داخل التكست بوكس hglogtd 10 283 08-08-16, 09:04 AM
آخر رد: hglogtd
  [VB.NET] تقسيم النص ادخل و ستفهم ileyslyes 4 191 12-06-16, 11:52 PM
آخر رد: mohamed haroon
Photo [VB.NET] تكبير النص في label visualist2015 3 330 12-02-16, 09:05 AM
آخر رد: visualist2015
  [سؤال] هل من طريقة لعمل autocomplete لمربع النص من قاعدة البيانات احمد عبد الحكيم 2 234 25-01-16, 02:10 AM
آخر رد: احمد عبد الحكيم
  [سؤال] دالة تتعرف علي الزر الذي تم النقر عليه وتغير قيمة مربع النص المقابل musab 1 219 12-01-16, 12:50 PM
آخر رد: silverlight
  استفسار عن اتجاه النص في ثيم نسيم الترك1 8 441 30-12-15, 05:15 AM
آخر رد: نسيم الترك1
  اريد كود لمسح النص من textbox بمجرد الضغط على ال textebox للكتابة رهف العريفي 18 1,127 27-11-15, 07:03 PM
آخر رد: احمداحمداحمد6

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


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