استفاده از فونت در سی شارپ

نحوه تغییر و دستکاری فونت یک کنترل موجود در یک برنامه ویندوزی به چه صورتی است؟ کلاس System.Drawing.Font به شما اجازه می‌دهد تا فونت‌های دلخواه خود را ساخته و به خاصیت Font کنترل‌های مختلف نسبت دهید. در زیر لیستی از خاصیت‌های مفید این کلاس را مشاهده می‌کنید.

خاصیت توضیح
Bold مشخص می‌کند که آیا فونت bold است یا نه
FontFamily خانواده فونتی که فونت از آن استفاده می‌کند را مشخص می‌کند.
Height فاصله بین خطوط فونت را تعیین می‌کند.
Italic تعیین می‌کند که آیا فونت مورب (italic) است یا نه؟
Name نام فونت را تعیین می‌کند.
Size سایز فونت را بر اساس واحد انتخاب شده تعیین می‌کند.
Strikeout تعیین می‌کند که آیا فونت دارای یک خط افقی در داخل خود باشد یا نه؟
Style قالب فونت را مشخص می‌کند.
Underline تعیین می‌کند که آیا فونت، زیر خط داشته باشد یا نه؟
Unit واحد اندازه فونت را مشخص می‌کند.

ایجاد شیء فونت

در کد زیر سازنده کلاس فونت فراخوانی و از فونت Times New Roman با اندازه 12 استفاده شده است.

Font myFont = new Font("Times New Roman", 12);

font family نوع فونت را مشخص می‌کند. برخی از فونت‌های معمول و مشهور عبارتند از Arial ،Verdana ،Courier New ،Times New Roman و Sans Serif. به این نکته توجه کنید که قبل از استفاده از یک فونت باید از وجود آن در سیستمتان مطمئن شوید. فونت‌های ذکر شده، در حالت پیشفرض در ویندوز وجود دارند. از کلاس System.Drawing.FontFamily برای ایجاد یک شئ FontFamily که از یک فونت با نام مشخص استفاده می‌کند، استفاده می‌شود. می‌توانید از یکی از سربارگذاری های کلاس Font استفاده کنید و یک شئ FontFamily را به آن ارسال نمایید:

FontFamily family = new FontFamily("Arial");
Font myFont = new Font(family, 12);

استفاده از شیء FontFamily به شما اجازه می‌دهد که از برخی از متدهای آن مانند GetCellAscent() ،GetCellDescent() ،GetEmHeight() و GetLineSpacing() استفاده کنید. سربارگذاری دیگر به شما اجازه می‌دهد که قالب فونت را تعیین کنید. برای این کار از مقادیر نوع شمارشی System.Drawing.FontStyle استفاده می‌کنیم. در مثال زیر یک فونت ضخیم (bold) ایجاد کرده‌ایم.

Font myFont = new Font("Verdana", 14, FontStyle.Bold);

یکی دیگر از سازنده‌های مفید کلاس Font به شما اجازه می‌دهد که از خواص یک فونت استفاده کرده و قالب جدیدی به آن اعمال نمایید. فرض کنید که یک برچسب (label) دارید و می‌خواهید آن را به صورت italic (حروف کج) در آورید. برای این کار می‌توان از مقدار FontStyle.Italic به صورت زیر استفاده کرد :

Font myFont = new Font(label1.Font, FontStyle.Italic);

همچنین می‌توان واحد اندازه گیری سایز فونت را مشخص کرد. به عنوان مثال اندازه 12 می‌تواند به صورت اینچ، پیکسل یا میلی متر باشد. برای تعیین واحد اندازه گیری می‌توان از نوع شمارشی System.Drawing.GraphicsUnit استفاده کرد. کد زیر یک فونت با اندازه 12 پیکسل ایجاد می‌کند :

Font myFont = new Font("Times New Roman", 12, GraphicsUnit.Pixel);

خانواده فونت (font family)

بسته به اینکه چند نوع فونت در سیستم شما نصب است می‌توان از فونت‌های مختلفی استفاده کرد. برای مشاهده فونت‌های نصب شده در ویندوز 7 به مسیر Start > Control Panel > Appearance and Personalization > Fonts بروید. شکل زیر چندین خانواده فونت را نمایش می‌دهد.
font-1001
شما می‌توانید نام یک خانواده فونت را به عنوان رشته ارسال و یا یک شئ FontFamily را هنگام تعریف یک شئ فونت ایجاد کنید.

Font myFont = new Font("Consolas", 14);
//or
Font myFont = new Font(new FontFamily("Consolas"), 14);

اندازه فونت

هنگامی که با سایز فونت سرکار دارید باید به دو چیز توجه کنید: اندازه واقعی و واحد مورد استفاده. می‌توانید از خاصیت Size اندازه فونت را مشخص کنید :

myFont.Size = 12;

با استفاده از مقادیر شمارشی System.Drawing.GraphicsUnit که برخی از آنها در جدول زیر آمده است هم می‌توان واحد اندازه گیری اندازه فونت را مشخص کرد:

مقدار شمارشی توضیح
Pixel مشخص می‌کند که واحد اندازه گیری پیکسل است.
Point مشخص می‌کند که واحد اندازه گیری نقطه چاپگر است.
Inch مشخص می‌کند که واحد اندازه گیری اینچ است.
Millimeter مشخص می‌کند که واحد اندازه گیری میلی متر است.

از خاصیت Unit کلاس فونت هم می‌توان برای تعیین واحد اندازه فونت استفاده کرد :

myFont.Unit = GraphicsUnit.Pixel;

قالب فونت

می‌توان چندین قالب مختلف را به فونت اعمال کرد. کلاس Font، دارای چندین خاصیت است که مقدار بولی قبول می‌کنند. به عنوان مثال می‌توان از خواص Bold یا italic استفاده کرد و مقدار true را به آنها اختصاص داد تا فونت به صورت ضخیم و یا حروف کج در آید.

myFont.Bold = true;
myFont.Italicized = true;

کد بالا فونت را همزمان به صورت ضخیم و حروف کج نمایش می‌دهد. از خواص Strikeout و Underline هم می‌توان به صورت بالا استفاده نمود. همچنین می‌توان از مقادیر نوع شمارشی System.Drawing.FontStyles برای قالب دهی به فونت استفاده کرد :

مقدار شمارشی توضیح
Regular بدون قالب
Bold متن را صورت ضخیم در می‌آورد.
Italic متن را به صورت حروف کج نمایش می‌دهد.
Underline یک خط به زیر متن می‌کشد.
Strikeout یک خط را بر روی متن می‌کشد.

شکل زیر نتیجه اعمال هر یک از مقادیر بالا بر روی متن را نشان می‌دهد :
font-1002
با استفاده از سازنده کلاس Font هم می‌توان یک قالب به فونت اعمال کرد:

myFont = new Font(myFont, FontStyle.Bold);

از عملگر بیتی OR هم برای اعمال چندین قالب به فونت می‌توان استفاده کرد :

myFont = new Font(myFont, FontStyle.Bold | FontStyle.Italic);

کد بالا فونت را هم به صورت ضخیم و هم حروف کج در می‌آورد. اگر بخواهید یک قالب خاص را از فونت حذف کنید می‌توانید از عملگر بیتی XOR استفاده کنید :

myFont = new Font(myFont, myFont.Style ^ FontStyle.Bold);

عملگر XOR به صورت دوگانه عمل می‌کند، بدین معنی که اگر فونت دارای قالب خاصی باشد آنرا حذف و اگر قالب به فونت اعمال نشده باشد آنرا به فونت اختصاص می‌دهد. عملگر بیتی AND نیز چک می‌کند که ایا قالب مشخصی به فونت اعمال شده است یا نه؟.

if ( (myFont.Style & FontStyle.Bold) == FontStyle.Bold)
   MessageBox.Show("The font is bold.");

به این نکته توجه کنید که عبارت در داخل پرانتز اعمال شده است چون عملگر == دارای حق تقدم بالاتری می‌باشد.