تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
[سؤال] تغيير خط ليبال من داخل مجلد السورس
#1
السلام عليكم

اذا اردنا  تغيير خط من داخل المشروع 
المفروض نسخ الخط في مجلد المشروع بعد انشاءه اي في مجلد bin _  Debug 

و نضع الكود التالي


PHP كود :
Dim privateFonts As New Drawing.Text.PrivateFontCollection
    
        privateFonts
.AddFontFile(Application.StartupPath "\egyptian.ttf")


 
       Label1.Font = New Font(privateFonts.Families(0), 26FontStyle.Bold)
 
    

الان كيف العمل اذا عندي اكثر من 100 خط في السورس
كيف  نحضر مساراتهم في مصفوفة
نضعها في كومبوكس مثلا
و بالتالي نفعل كود التغيير عبر المصفوفة
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد
تم الشكر بواسطة: ابراهيم ايبو , asemshahen5
#2
وعليكم السلام

اكتب اسماءهم في مصفوفة ثم قم بالمرور عليهم بحلفة For كالتالي
كود :
Dim fonts = {"egyptian.ttf", "egyptian.ttf", "egyptian.ttf"}
For Each f As String In fonts
   privateFonts.AddFontFile(Application.StartupPath & "\" & f)
Next
الرد
#3
(27-08-20, 07:08 PM)عيد مبارك كتب : وعليكم السلام

اكتب اسماءهم في مصفوفة ثم قم بالمرور عليهم بحلفة For كالتالي
كود :
Dim fonts = {"egyptian.ttf", "egyptian.ttf", "egyptian.ttf"}
For Each f As String In fonts
   privateFonts.AddFontFile(Application.StartupPath & "\" & f)
Next

لكن الخطوط في ملف السورس 
كما انه غير الممكن ان اضع عدد كبير من الخطوط يديويا
شكرا
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد
تم الشكر بواسطة: asemshahen5 , عيد مبارك , عيد مبارك
#4
السلام عليكم ورحمة الله وبركاته

اخي عبد الهادي لماذا تريد وضع الفونتات في مجلد المشروع؟

المعتاد اننا لو استحدمنا فونت ما في المشروع وهذا الفونت قد لايكون عند من سيستخدم البرنامج عندها نرفق نسخة من الفونت ليتم تثبيتها في مجلد Fonts الخاص بالويندوز عند المستخدم وبذلك سيتم استخدام فونتات الويندوز 

توجد بعض البرامج (برامج النشر المكتبي مثل ادوبي انديزاين) تحتاج الى تثبيت الفونتات في مجلد فونت خاص بالبرنامج وهذه حالة خاصة

اما وان كان عندك فكرة تريد تنفيذها انت اعلم بذلك
اعمل الخير واجرك لاتنتظره فالله خير من اليك يرده
البرمجة ليست مجرد كود بل هي منهج تفكير منطقي لحل المشكلات







الرد
#5
بارك الله فيك أخي الغالي إبراهيم إيبو
و هي نفس الفكرة التي أفضلها
كمثال ..
تحياتي
الرد
تم الشكر بواسطة: asemshahen5 , asemshahen5
#6
(27-08-20, 09:21 PM)ابراهيم ايبو كتب : السلام عليكم ورحمة الله وبركاته

اخي عبد الهادي لماذا تريد وضع الفونتات في مجلد المشروع؟

المعتاد اننا لو استحدمنا فونت ما في المشروع وهذا الفونت قد لايكون عند من سيستخدم البرنامج عندها نرفق نسخة من الفونت ليتم تثبيتها في مجلد Fonts الخاص بالويندوز عند المستخدم وبذلك سيتم استخدام فونتات الويندوز 

توجد بعض البرامج (برامج النشر المكتبي مثل ادوبي انديزاين) تحتاج الى تثبيت الفونتات في مجلد فونت خاص بالبرنامج وهذه حالة خاصة

اما وان كان عندك فكرة تريد تنفيذها انت اعلم بذلك

صحيح استاذ
اعمل على مشروع صانع شهادات تقدير و تشجيع
( كنت قد صممته بالاوتوبلاي بطريقة بسيطة )
https://www.youtube.com/watch?v=RaiLz3PbpfY


و لان في vb مميزات اكثر فاعلية و سهولة

اريد ان اوفر للمستخدم خطوط جميلة ممكن ليست في حاسوبه 
دون الحاجة لتثبيتها 

العمل يسير بشكل جميل ان كان ملف السورس موضح في الرابط الخط
لكن السورس لا يعيطيك رابط 

يعني المشكل في مرحلة تحويله الى exe

(27-08-20, 10:01 PM)عبد العزيز البسكري كتب :
بارك الله فيك أخي الغالي إبراهيم إيبو
و هي نفس الفكرة التي أفضلها
كمثال ..
تحياتي

صحيح 
وهو الحل لتبيث البرنامج بمجلد الخطوط و السورس

سنحاول سيدي الكريم
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد
تم الشكر بواسطة: عبد العزيز البسكري , asemshahen5
#7
اخي عبد الهادي وجدت الحل 

ضع الفونتات في الريسورس 

   


وسيقوم الريسورس بتحويلها الى مصفوفه بايتات

اضف مجالات الاسماء التالية 

كود :
Imports System.Drawing.Text
Imports System.Runtime.InteropServices

 
الان نخزن الفونتات من الريسورس في ليست Fonts

وكذلك نقوم بعمل ليست لجلب الفونتات FontFamilies

كود :
   Dim Fonts As New List(Of Byte())({My.Resources.YIKES___,
                                    My.Resources.Caramel_Candy,
                                    My.Resources.Anyk,
                                    My.Resources.Because_I_am_Happy_Regular})

   Dim FontFamilies As New List(Of FontFamily)


نعرف الاجراء الذي يضيف الفونتات من ليست Fonts  الى ليست FontFamilies

باستخدام PrivateFontCollection ايضا ولكنه يقوم بتخزين الفونتات الى الذاكره وجلبها باستخدام AddMemoryFont

كود :
   Sub AddFonts()
       For Each f In Fonts
           Dim pfc As New PrivateFontCollection

           Dim fontData = Marshal.AllocCoTaskMem(f.Length)
           Marshal.Copy(f, 0, fontData, f.Length)
           pfc.AddMemoryFont(fontData, f.Length)

           FontFamilies.Add(pfc.Families(0))
       Next
   End Sub


الان ما علينا فعله في حدث اللود نقوم باستدعاء الاجراء ، وكذلك اسناد الفونتات من الليست 

كود :
   Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
       AddFonts()



       Label1.Font = New Font(FontFamilies(0), 26)
       Label2.Font = New Font(FontFamilies(1), 26)
       Label3.Font = New Font(FontFamilies(2), 26)
       Label4.Font = New Font(FontFamilies(3), 26)



   End Sub
   
ملاحظة هامة : لكي تعمل هذه الطريقة يجب ان تعطل application framework :

   


دائما ما احب التعامل مع المرفقات عندما تكون الملفات المطلوبة غير متغيرة لتريح رأسك من المسارات

المصدر : https://stackoverflow.com/a/36509042/14137871


الملفات المرفقة
.zip   PrivateFonts.zip (الحجم : 760.72 ك ب / التحميلات : 24)
الرد
تم الشكر بواسطة: عبد العزيز البسكري , WaeLx , WaeLx , asemshahen5
#8
ممتاز قبل تجريبه
شكرا على الجهد المبدول

الى العمل فورا
 لعل الكلمة التي تنفعني لم أكتبها بعد
عبد الله بن المبارك
الرد
#9
السّلام عليكم و رحمة الله و بركاته
و الله إخواني الأفاضل و سادتي الأكارم
و مع كامل إحتراماتي لأفكاركم
و مع كامل تقديراتي لأساليبكم
لكنّي .. عن نفسي أتحدث
غير مقتنع تماما بما تقومون به
نسخ الخط الخرجي إلى مجلّد الخطوط بالوينداوز له شُرْطي محلّف يصعب إستغفاله
و هو
التشغيل كمسؤول
الحل بسيط بالنسبة للذين يستعملون أثناء التحزيم الستيب فاكتوري مثلما أشرت له بالرابط أعلاه
من غير الستيب فاكتوري .. و من خلال مشاريعنا .. لا يمكن
الطريقة التي أشار إليها أخي و أستاذي أنس محمود .. بارك الله فيه و له
غير منطقية يا عبد الهادي
كيف لدي مشروع بمئات الأدوات
أكتب اسم كل أداة بالكود لأضيف لها نوعية الخط
إضافة .. أنّ هذه الطريقة تسبب أحيانا بعض المشاكل .. عن تجربة
إذن الحل .. الوحيد و الأوحد بالنسبة لي شخصيا و لا ألزم به أحدا آخرا هو ..
إعطاء الخطوط الخارجية المستعملة للعميل و يقوم بتنصيبها يدويا بمجلد الخطوط
لماذا تعقيد الأمور و العملية كلها لا تستغرق 30 ثانية
و الله الموفق و الله المستعان
الرد
تم الشكر بواسطة: WaeLx , WaeLx , Anas Mahmoud , asemshahen5
#10
(28-08-20, 03:29 AM)عبد العزيز البسكري كتب :
السّلام عليكم و رحمة الله و بركاته
و الله إخواني الأفاضل و سادتي الأكارم
و مع كامل إحتراماتي لأفكاركم
و مع كامل تقديراتي لأساليبكم
لكنّي .. عن نفسي أتحدث
غير مقتنع تماما بما تقومون به
نسخ الخط الخرجي إلى مجلّد الخطوط بالوينداوز له شُرْطي محلّف يصعب إستغفاله
و هو
التشغيل كمسؤول
الحل بسيط بالنسبة للذين يستعملون أثناء التحزيم الستيب فاكتوري مثلما أشرت له بالرابط أعلاه
من غير الستيب فاكتوري .. و من خلال مشاريعنا .. لا يمكن
الطريقة التي أشار إليها أخي و أستاذي أنس محمود .. بارك الله فيه و له
غير منطقية يا عبد الهادي
كيف لدي مشروع بمئات الأدوات
أكتب اسم كل أداة بالكود لأضيف لها نوعية الخط
إضافة .. أنّ هذه الطريقة تسبب أحيانا بعض المشاكل .. عن تجربة
إذن الحل .. الوحيد و الأوحد بالنسبة لي شخصيا و لا ألزم به أحدا آخرا هو ..
إعطاء الخطوط الخارجية المستعملة للعميل و يقوم بتنصيبها يدويا بمجلد الخطوط
لماذا تعقيد الأمور و العملية كلها لا تستغرق 30 ثانية
و الله الموفق و الله المستعان

كلامك سليم استاذي عبد العزيز 100% طبعا في الحياة العملية نعطي العميل الفونتات ويقوم هو بتثبيها 
انا شخصيا عملي الذي اتقوت منه هو التصميم الجرافيكي واتعامل مع مسألة الفونتات بشكل دائم تقريبا 

ولكن الفكرة اجابتي كانت تحت شرطين هما ان تكون ملفات الخطوط مدمجة في مرفقات المشروع ، وان لان يقوم المستخدم بالاطلاع على هذه الملفات او يضطر لتثبيتها ،

اذا احتجنا استخدام فونت على الطاير مثلا

منذ فتره كنت قد كونت قناعه انه اذا قمت بتخزين اي نوع ملفات في المرفقات فانه وعلى الاغلب يمكنك دائما استدعائها الى الذاكره ومن ثم استخدامها على الطاير في برنامجك ( اي نوع صوت او صورة او ملف نص او غيرها )

وانا احب التحدي بصراحة لذلك بحثت عن الحل تحت هذين الشرطين  Big Grin

طبعا مع اقتناعي التام بكلامك هذه ليست طريقة للاستخدام الدائم يعني 

تقبل مودتي
الرد
تم الشكر بواسطة: asemshahen5 , WaeLx , عبد العزيز البسكري


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  [سؤال] اضافة كومبوبكس داخل داتاقريد فيو معبئ من قاعدة البيانات KIKO1992 2 30 منذ 8 ساعة مضت
آخر رد: KIKO1992
  كلمة مكتوبة داخل نص البحث؟ Abuzakria 5 127 , 04:27 PM
آخر رد: Abuzakria
  نقل مجموعة ملفات من مجلد الى مجلد البرنامج aftfm 1 115 15-11-20, 09:04 PM
آخر رد: aftfm
  [سؤال] الحفظ و التعديل و الحذف داخل datagridview and databases Sql server mo.fathi 1 143 10-11-20, 04:32 PM
آخر رد: mmali127
  ماهي طريقة إضافة اكثر من صورة دفعة واحد لمجلد الصور داخل المشروع وحفظ المسارات بـ sql العطر الرايق 13 456 10-11-20, 03:36 AM
آخر رد: سعود
  تغيير نص التكست بوكس في كريستال ريبورت Mohammed Nafa 0 165 27-10-20, 08:56 PM
آخر رد: Mohammed Nafa
  البحث عن نص معين داخل صفحة ويب وعرضة Basil Abdallah 1 225 26-10-20, 11:11 AM
آخر رد: اليوم السابع
  كود من اجل فتح وعرض قائمة cmd من داخل الفورم elskary2010 4 797 08-10-20, 08:25 PM
آخر رد: AsSaHaM
  Zoom الصورة المعروضة داخل picturebox Lathe1 5 328 03-10-20, 04:20 AM
آخر رد: ابو روضة
  مساعدة بخصوص حفظ عدد داخل datagridview chankar 18 981 18-09-20, 02:46 AM
آخر رد: chankar

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


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