.NET Micro Framework: Bitmap ile Yazı Yazdırmak
Grafiksel uygulamalarda yazı yazdırmak için Bitmap ve Font
sınıflarını kullanıyoruz. Mikrodenetleyicilerin kapasiteli sınırlı olduğu için,
yalnızca uygulamamızda kullanacağımız yazı tipleri seçilip kaynak dosyasına eklenir. Bu
nedenle .NET Micro Framework ile yazı yazdırmak, masaüstü uygulamalarına göre
farklılık gösterir.
Çalışma Mantığı
Önceki Bitmap örneklerimizde olduğu gibi, yazı yazdırmak için
cihazımızın ekran çözünürlüğünde bir Bitmap oluşturup, üzerine yazı ekleyeceğiz.
Hafızada oluşan çizim tamamlandığında ise görüntüyü ekrana yansıtacağız.
Yazı Tipleri
.NET Micro Framework, mikrodenetleyicinin yükünü azaltmak için
önceden render edilmiş, kendine özel bir yazı tipi formatı kullanır. ".tinyfnt"
uzantılı bu yazı tipi, her karakterin Bitmap çizimini içerir. Bu nedenle,
.tinyfnt uzantılı bir yazı tipi tek boyutta ve özelliktedir (Kalınlık, eğim...)
.NET MF SDK kurulumuyla "NinaB" ve "small" adında iki temel yazı tipi gelir. Bunlara "C:\Program
Files (x86)\Microsoft .NET Micro Framework\v4.1\Fonts" konumundan
erişebilirsiniz.
Uygulamamıza başlarken öncelikle Visual Studio 2010 üzerinde bir Micro
Framework Console Application oluşturalım. Kaynaklarımız arasına ".tinyfnt"
uzantılı yazı tiplerini eklemek için Visual Studio Solution Explorer'dan
Resources.resx dosyasını açalım ve pencerenin sol üst tarafından "Files"
seçimini yapalım:

Add Resource > Add Existing File seçeneğinden "C:\Program
Files (x86)\Microsoft .NET Micro Framework\v4.1\Fonts" konumunda bulunan
iki yazı tipi dosyasını kaynak dosyamıza ekleyelim:

Resources.resx penceresinde eklediğimiz yazı tiplerini
göreceksiniz. Bu pencereyi kaydedip kapatabilirsiniz.

Uygulama Kodları
Bitmap ve Font sınıflarına ulaşabilmek için öncelikle proje
referansları arasına Microsoft.SPOT.Graphics.dll'i ekleyelim. Program.cs'e de "Microsoft.SPOT.Presentation" ve "Microsoft.SPOT.Presentation.Media"
namespace'lerini ekleyelim.
 |
Uygulamamızda yapacağımız işlem, NinaB yazı tipi ile "Merhaba Dünya" başlığı
yazdırmak. Hemen altına small yazı tipini kullanarak bir satır daha ekleyeceğiz.
Bu iki satırı DrawText metodunu kullanarak çizdireceğiz. DrawText metodu, tek
satırlık yazılar için tercih edilir.
Birden çok satır yazı çizdirmek istiyorsak, DrawTextInRect metodunu kullanmamız
gerekiyor. Bu metodda çizdirilecek yazı, belirlenen dikdörtgen alanın içerisinde
olacaktır. "Lorem ipsum" ile başlayan paragraf DrawTextInRect metoduyla
yazılmıştır. Paragrafın hizzalaması, satır atlaması ve harflerin saydamlığı gibi
özellikleri ayarlanabilir. |
Yukarıda gösterilen görünümü almak için Program.cs dosyasına
aşağıdaki kodları ekleyelim:
using System;
using System.Threading;
using Microsoft.SPOT;
using Microsoft.SPOT.Presentation.Media;
namespace MFGraphics3
{
public class Program
{
public static void Main()
{
//Adım 1: Ekran çözünürlüğünde bir Bitmap oluşturalım:
Bitmap bmp = new Bitmap(320, 240);
//Adım 2: Eklediğimiz fontları tanıtalım:
Font font1 = Resources.GetFont(Resources.FontResources.NinaB); //NinaB yazı tipi
Font font2 = Resources.GetFont(Resources.FontResources.small); //small yazı tipi
//Adım 3: Bitmap üzerine yazı yazdıralım:
bmp.DrawText("Merhaba Dunya!", //Çizdirilecek yazı
font1, //NinaB yazı tipi
ColorUtility.ColorFromRGB(255, 255, 255), //Beyaz renk
10, 10); //Sol üst noktanın X ve Y koordinatları
bmp.DrawText(".NET Micro Framework ile yazi yazdirmak...", //Çizdirilecek yazı
font2, //small yazı tipi
ColorUtility.ColorFromRGB(0, 255, 0), //Yeşil renk
10, 30); //Sol üst köşenin X ve Y koordinatları
bmp.DrawTextInRect("Lorem ipsum dolor sit amet, consectetur adipisicing " +
"elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. " +
"Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi " +
"ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit " +
"in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur " +
"sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt " +
"mollit anim id est laborum.", //Çizdirilecek yazı
10, 50, //Sol üst köşenin X ve Y koordinatları
300, 150, //Yazı alanının genişlik ve yüksekliği
Bitmap.DT_AlignmentLeft | Bitmap.DT_WordWrap | Bitmap.OpacityOpaque, //Özellikler
ColorUtility.ColorFromRGB(0, 255, 255), //Renk
font2); //small yazı tipi
//Adım 4: Bitmap'i ekranda gösterelim:
bmp.Flush();
Thread.Sleep(Timeout.Infinite); //Main Thread'i uyutalım
}
}
}
F5 ile uygulamayı simulatör üzerinde çalıştırdığımızda,
eklediğimiz yazıların ekranda göründüğünü göreceksiniz. Kodları fiziksel cihaz
üzerinde çalıştırmak için, o cihazın donanım referanslarını ekleyip ekran
çözünürlüğünü ayarlamanız gerekmektedir.
Visual Studio 2010 için kaynak kodları
buradan indirebilirsiniz.