السلام عليكم
اذا اردنا تغيير خط من داخل المشروع
المفروض نسخ الخط في مجلد المشروع بعد انشاءه اي في مجلد bin _
Debug
و نضع الكود التالي
PHP كود :
Dim privateFonts As New Drawing.Text.PrivateFontCollection
privateFonts.AddFontFile(Application.StartupPath & "\egyptian.ttf")
Label1.Font = New Font(privateFonts.Families(0), 26, FontStyle.Bold)
الان كيف العمل اذا عندي اكثر من 100 خط في السورس
كيف نحضر مساراتهم في مصفوفة
نضعها في كومبوكس مثلا
و بالتالي نفعل كود التغيير عبر المصفوفة
وعليكم السلام
اكتب اسماءهم في مصفوفة ثم قم بالمرور عليهم بحلفة For كالتالي
كود :
Dim fonts = {"egyptian.ttf", "egyptian.ttf", "egyptian.ttf"}
For Each f As String In fonts
privateFonts.AddFontFile(Application.StartupPath & "\" & f)
Next
(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
لكن الخطوط في ملف السورس
كما انه غير الممكن ان اضع عدد كبير من الخطوط يديويا
شكرا
السلام عليكم ورحمة الله وبركاته
اخي عبد الهادي لماذا تريد وضع الفونتات في مجلد المشروع؟
المعتاد اننا لو استحدمنا فونت ما في المشروع وهذا الفونت قد لايكون عند من سيستخدم البرنامج عندها نرفق نسخة من الفونت ليتم تثبيتها في مجلد Fonts الخاص بالويندوز عند المستخدم وبذلك سيتم استخدام فونتات الويندوز
توجد بعض البرامج (برامج النشر المكتبي مثل ادوبي انديزاين) تحتاج الى تثبيت الفونتات في مجلد فونت خاص بالبرنامج وهذه حالة خاصة
اما وان كان عندك فكرة تريد تنفيذها انت اعلم بذلك
بارك الله فيك أخي الغالي إبراهيم إيبو
و هي نفس الفكرة التي أفضلها
كمثال ..
تحياتي
(27-08-20, 09:21 PM)ابراهيم ايبو كتب : [ -> ]السلام عليكم ورحمة الله وبركاته
اخي عبد الهادي لماذا تريد وضع الفونتات في مجلد المشروع؟
المعتاد اننا لو استحدمنا فونت ما في المشروع وهذا الفونت قد لايكون عند من سيستخدم البرنامج عندها نرفق نسخة من الفونت ليتم تثبيتها في مجلد Fonts الخاص بالويندوز عند المستخدم وبذلك سيتم استخدام فونتات الويندوز
توجد بعض البرامج (برامج النشر المكتبي مثل ادوبي انديزاين) تحتاج الى تثبيت الفونتات في مجلد فونت خاص بالبرنامج وهذه حالة خاصة
اما وان كان عندك فكرة تريد تنفيذها انت اعلم بذلك
صحيح استاذ
اعمل على مشروع صانع شهادات تقدير و تشجيع
( كنت قد صممته بالاوتوبلاي بطريقة بسيطة )
https://www.youtube.com/watch?v=RaiLz3PbpfY
و لان في vb مميزات اكثر فاعلية و سهولة
اريد ان اوفر للمستخدم خطوط جميلة ممكن ليست في حاسوبه
دون الحاجة لتثبيتها
العمل يسير بشكل جميل ان كان ملف السورس موضح في الرابط الخط
لكن السورس لا يعيطيك رابط
يعني المشكل في مرحلة تحويله الى exe
(27-08-20, 10:01 PM)عبد العزيز البسكري كتب : [ -> ]بارك الله فيك أخي الغالي إبراهيم إيبو
و هي نفس الفكرة التي أفضلها
كمثال ..
تحياتي
صحيح
وهو الحل لتبيث البرنامج بمجلد الخطوط و السورس
سنحاول سيدي الكريم
اخي عبد الهادي وجدت الحل
ضع الفونتات في الريسورس
[
attachment=25539]
وسيقوم الريسورس بتحويلها الى مصفوفه بايتات
اضف مجالات الاسماء التالية
كود :
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
[
attachment=25540]
ملاحظة هامة : لكي تعمل هذه الطريقة يجب ان تعطل application framework :
[
attachment=25541]
دائما ما احب التعامل مع المرفقات عندما تكون الملفات المطلوبة غير متغيرة لتريح رأسك من المسارات
المصدر :
https://stackoverflow.com/a/36509042/14137871
ممتاز قبل تجريبه
شكرا على الجهد المبدول
الى العمل فورا
السّلام عليكم و رحمة الله و بركاته
و الله إخواني الأفاضل و سادتي الأكارم
و مع كامل إحتراماتي لأفكاركم
و مع كامل تقديراتي لأساليبكم
لكنّي .. عن نفسي أتحدث
غير مقتنع تماما بما تقومون به
نسخ الخط الخرجي إلى مجلّد الخطوط بالوينداوز له شُرْطي محلّف يصعب إستغفاله
و هو
التشغيل كمسؤول
الحل بسيط بالنسبة للذين يستعملون أثناء التحزيم الستيب فاكتوري مثلما أشرت له بالرابط أعلاه
من غير الستيب فاكتوري .. و من خلال مشاريعنا .. لا يمكن
الطريقة التي أشار إليها أخي و أستاذي أنس محمود .. بارك الله فيه و له
غير منطقية يا عبد الهادي
كيف لدي مشروع بمئات الأدوات
أكتب اسم كل أداة بالكود لأضيف لها نوعية الخط
إضافة .. أنّ هذه الطريقة تسبب أحيانا بعض المشاكل .. عن تجربة
إذن الحل .. الوحيد و الأوحد بالنسبة لي شخصيا و لا ألزم به أحدا آخرا هو ..
إعطاء الخطوط الخارجية المستعملة للعميل و يقوم بتنصيبها يدويا بمجلد الخطوط
لماذا تعقيد الأمور و العملية كلها لا تستغرق 30 ثانية
و الله الموفق و الله المستعان
(28-08-20, 03:29 AM)عبد العزيز البسكري كتب : [ -> ]السّلام عليكم و رحمة الله و بركاته
و الله إخواني الأفاضل و سادتي الأكارم
و مع كامل إحتراماتي لأفكاركم
و مع كامل تقديراتي لأساليبكم
لكنّي .. عن نفسي أتحدث
غير مقتنع تماما بما تقومون به
نسخ الخط الخرجي إلى مجلّد الخطوط بالوينداوز له شُرْطي محلّف يصعب إستغفاله
و هو
التشغيل كمسؤول
الحل بسيط بالنسبة للذين يستعملون أثناء التحزيم الستيب فاكتوري مثلما أشرت له بالرابط أعلاه
من غير الستيب فاكتوري .. و من خلال مشاريعنا .. لا يمكن
الطريقة التي أشار إليها أخي و أستاذي أنس محمود .. بارك الله فيه و له
غير منطقية يا عبد الهادي
كيف لدي مشروع بمئات الأدوات
أكتب اسم كل أداة بالكود لأضيف لها نوعية الخط
إضافة .. أنّ هذه الطريقة تسبب أحيانا بعض المشاكل .. عن تجربة
إذن الحل .. الوحيد و الأوحد بالنسبة لي شخصيا و لا ألزم به أحدا آخرا هو ..
إعطاء الخطوط الخارجية المستعملة للعميل و يقوم بتنصيبها يدويا بمجلد الخطوط
لماذا تعقيد الأمور و العملية كلها لا تستغرق 30 ثانية
و الله الموفق و الله المستعان
كلامك سليم استاذي عبد العزيز 100% طبعا في الحياة العملية نعطي العميل الفونتات ويقوم هو بتثبيها
انا شخصيا عملي الذي اتقوت منه هو التصميم الجرافيكي واتعامل مع مسألة الفونتات بشكل دائم تقريبا
ولكن الفكرة اجابتي كانت تحت شرطين هما ان تكون ملفات الخطوط مدمجة في مرفقات المشروع ، وان لان يقوم المستخدم بالاطلاع على هذه الملفات او يضطر لتثبيتها ،
اذا احتجنا استخدام فونت على الطاير مثلا
منذ فتره كنت قد كونت قناعه انه اذا قمت بتخزين اي نوع ملفات في المرفقات فانه وعلى الاغلب يمكنك دائما استدعائها الى الذاكره ومن ثم استخدامها على الطاير في برنامجك ( اي نوع صوت او صورة او ملف نص او غيرها )
وانا احب التحدي بصراحة لذلك بحثت عن الحل تحت هذين الشرطين
طبعا مع اقتناعي التام بكلامك هذه ليست طريقة للاستخدام الدائم يعني
تقبل مودتي