در توسینسو تدریس کنید

و

با دانش خود درآمد کسب کنید

آموزش نحوه استفاده از فونت ها در برنامه سی شارپ برای زیبایی بیشتر

سلام دوستان. گاهی اوقات ما در برنامه نویسی برای این که برنامه ما دارای ظاهر زیبا تری باشد و کاربر پسند تر باشد از فونت هایی استفاده می کنیم که خاص هستند. طبیعتا ممکن است که این فونت ها روی همه سیستم های مقصد نصب نشده باشند و یا اگر هم نصب شده اند از لحاظ ورژن سازگاری نداشته باشند. این امر باعث می شود که برنامه ما در کامپیوتر مقصد با آن ظاهر که می خواستیم نمایش داده نشود و موجب نارضایتی کاربران شود. در این مطلب قصد داریم که آموزش دهیم در زبان سی شارپ حتی اگر فونتی روی یک سیستم نصب نباشد چگونه از فونت مورد نظر استفاده کنیم بدون این که فونت را نصب کنیم.

ساخت پروژه

ابتدا در ویژوال استودیو یک پروژه جدید از نوع Windows Form می سازیم. به این صورت که در ویژوال استودیو از منوی file گزینه new را انتخاب می کنیم و از زیر منوی باز شده گزینه project را انتخاب می کنیم. با این کار یک صفحه به شکل زیر باز می شود که از داخل آن در سمت چپ Visual C# را انتخاب می کنیم و از سمت راست Windows Font Application را انتخاب می کنیم. در قسمت Name یک نام برای پروژه در نظر می گیریم که ما در این مثال نام آن را TestFontEmbeding قرار می دهیم و بر روی دکمه ok کلیک می کنیم.

وب سایت توسینسو

پس از این کار صفحه اصلی برنامه به شما نشان داده می شود تا بتوانید آن را طراحی کنید. ما برای تست برنامه کنترل های textbox, Labe, Button را روی فرم قرار می دهیم. برای این کار از پنجره toolbox که معمولا در سمت چپ محیط ویژوال استودیو قرار دارد کنترل های گفته شده را در درون فرم برنامه بکشید. و از پنجره properties که معمولا در سمت راست ویژوال استودیو قرار دارد مقادیر text هر کدام از این کنترل ها را به شکل زیر قرار می دهیم.فرم برنامه به شکل زیر خواهد بود.

وب سایت توسینسو

حال باید فایل فونت مورد نظر را پیدا کنیم. بعد از این که فایل فونت مورد نظر که معمولا پسوند ttf دارند را پیدا کردیم از قسمت زیر بر روی Resources.resx کلیک کنیم تا پنجره مربوط به این فایل باز شود.

وب سایت توسینسو

پس از این که این صفحه باز شد از قسمت بالای پنجره بر روی فلش Add Resource کلیک کنید و از منوی که زیر آن باز می شود بر روی Add Existing file کلیک کنید. در این صورت پنجره ای باز می شود که با استفاده از این پنجره فایل فونت خود را با آن انتخاب کنید و بر روی دکمه open کلیک کنید. من در این مثال فایل BKamran.ttf را که قبلا فایل آن را داشتم انتخاب کردم. سپس فایل Resources.resx را ذخیره کرده و ببندید.

حال بر روی لیبل و دکمه ای که بر روی فرم اصلی برنامه قرار داده بودید کلیک کنید و از پنجره ی properties بر روی use compatible text rendering کلیک کنید و مقدار آن را true قرار دهید.

حال بر روی فرم اصلی برنامه کلیک کنید و دکمه f7 را بزنید تا وارد قسمت کد نویسی این فرم شوید. سپس در داخل کلاس Form1 متد زیر را بنویسید.

  public void InitFont()
        {
            var pfc = new PrivateFontCollection();
            var fontLength = Properties.Resources.BKamran.Length;
            var fontData = Properties.Resources.BKamran;
            var data = Marshal.AllocCoTaskMem(fontLength);
            Marshal.Copy(fontData, 0, data, fontLength);
            pfc.AddMemoryFont(data, fontLength);
            Marshal.FreeCoTaskMem(data);
            textBox1.Font = new Font(pfc.Families[0], textBox1.Font.Size);
            label1.Font=new Font(pfc.Families[0],label1.Font.Size);
            button1.Font=new Font(pfc.Families[0],button1.Font.Size);
        }

دقت داشته باشید که در این کد textbox1 نام کنترل textboxی است که بر روی فرم اصلی قرار داده شده است و همچنین label1, button1 هم به ترتیب نام کنترل های موجود در فرم اصلی می باشد. همچنین BKamran نام فونتی است که ما در مراحل قبل به پروژه اضافه کردیم که می توانید نام آن را با توجه به فونتی که به برنامه اضافه کرده اید تغییر دهید.

در مرحله نهایی باید به متد سازنده(constructor) فرم که نام آن Form1() است برویم و متد InitFont را داخل آن فراخوانی کنیم. که متد Form1بعد از این تغییر به شکل زیر خواهد بود

  public Form1()
        {
            InitializeComponent();
            InitFont();
        }

حال اگر برنامه را اجرا کنیم تغییر را به صورت تصویر زیر مشاهده خواهیم کرد.

عکس افتر

Itpro باشید

نویسنده: مهدی عادلی فر

منبع: Itpro

هرگونه نشر و کپی برداری بدون ذکر منبع و نام نویسنده دارای اشکال اخلاقی می باشد.

2 نظر
رامین تقی زاده

بسیار جالب بود. آیا این روش بر روی همه فونت ها قابل اجراست؟

در wpf امکان font embedding فراهم هست و با تنظیمات بسیار کمی میتونیم فونت مورد نظر خودمون رو در برنامه تعبیه کنیم با این شرط که تولید کننده فونت برای اون فونت امکان embed شدن رو فراهم کرده باشه. آیا در winform هم اینطوریه؟

مثلا فونت Bkamran که شما در اینجا استفاده کردید این امکان رو داره اما فونت هایی هم وجود دارند که restricted هستند.

mgupload

با عرض سلام و احترام

آیا امکان دارد روشی نیز ارائه کنید که در آن بجای اینکه فونت در Resources کپی شود از فایل درون پوشه پروژه لود شود

با تشکر از شما

نظر شما
برای ارسال نظر باید وارد شوید.
از سرتاسر توسینسو
تنظیمات حریم خصوصی
تائید صرفنظر
×

تو می تونی بهترین نتیجه رو تضمینی با بهترین های ایران بدست بیاری ، پس مقایسه کن و بعد خرید کن : فقط توی جشنواره تابستانه می تونی امروز ارزونتر از فردا خرید کنی ....