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

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

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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  بحث بالكومبو بوكس لا ى جزء من النص Lathe1 3 441 28-02-24, 02:59 AM
آخر رد: معاند الحظ
  [VB.NET] استخلاص جزء محدد من نص وإضافته إلى بداية النص ؟ AmeenRashed 2 213 02-01-24, 10:06 AM
آخر رد: AmeenRashed
  دالة ادخال ارقام فقط في مربع النص atefkhalf2004 7 809 20-08-23, 09:04 AM
آخر رد: atefkhalf2004
  طريقة حذف حرف زيادة من مربع النص علاء الكبابي 2 553 19-06-23, 05:08 PM
آخر رد: Taha Okla
  اريد كود لمسح النص من textbox بمجرد الضغط على ال textebox للكتابة رهف العريفي 21 11,884 03-06-23, 04:56 AM
آخر رد: سعود
Rainbow [كود] النص المكتوب يكون على شكل وميض او تغير في الالوان محمد مسافر 1 460 13-05-23, 01:30 AM
آخر رد: عبدالله الدوسري
  [VB.NET] كود نسخ النص MOHAMMED ALZWI 2 496 13-03-23, 11:24 AM
آخر رد: MOHAMMED ALZWI
  اريد مساعدة في ازالة جزء من النص لان لا يوجد لدي خبرة كافية للتعامل مع دوال النصوص Meroo1809 2 521 05-01-23, 07:38 PM
آخر رد: Meroo1809
  مسح جميع أدوات النص دفعة واحدة sads 8 3,663 29-10-22, 04:04 PM
آخر رد: خالد العصاوي
  تحويل النص تلقائيا للعربية او الانجليزية nooralcown 6 5,770 19-08-22, 06:29 AM
آخر رد: esawy1

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


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