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


المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  تغيير المسار الي مسار البرنامج في تقرير ميكروسوفت atefkhalf2004 2 107 02-04-24, 05:05 PM
آخر رد: atefkhalf2004
  تغيير على كود الحفظ محمد خيري 6 232 28-03-24, 04:20 PM
آخر رد: محمد خيري
  تغيير اسم حقل او تغيير نوع البيان atefkhalf2004 5 304 31-01-24, 04:09 PM
آخر رد: atefkhalf2004
  [سؤال] كيفية انشاء فورم داخل مشروعى عاصم النجار 2 314 05-01-24, 12:36 AM
آخر رد: HALIM ELEULMA
  حماية عمود داخل ورقة الاكسل العيدروس 3 195 05-01-24, 12:21 AM
آخر رد: HALIM ELEULMA
  هل الداتا قراد فيو تسمح بتعدد الاسطر داخل الخلية عند جلب بيانات نصية طويله من قاعدة ب khalidalwdi 3 471 10-11-23, 11:08 AM
آخر رد: khalidalwdi
  [سؤال] اريد تغيير اسم حقل ضمن جدول بقاعدة بيانات اكسس mh66 1 365 08-11-23, 08:16 AM
آخر رد: justforit
  يوجد مشكلة عند تحميل البيانات فى كمبوبوكس داخل داتا جريد new_programer 2 475 17-10-23, 06:51 PM
آخر رد: new_programer
  كود تغيير قيمة تكست بوكس فى تاريخ معين Ahmed.vb 2 966 11-10-23, 10:35 PM
آخر رد: aljzazy
  اريد اضافة متغيراخر داخل Listbox1 احتاج تعديل بسيط moh61 0 353 05-08-23, 02:29 PM
آخر رد: moh61

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


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