A feladat megvalósításához egy speciális ecsetet kell létrehoznunk és ezt használni a kirajzolandó objektumoknál. Ehhez a TextureBrush osztály lesz segítségünkre.
A mellékelt példában a Form hátterére rajzolunk ki egy akkora téglalapot, mint a maga a Form. A téglalap hátterét a TextrureBrush szolgáltatja, amelynek megadunk egy BMP képet.
protected void Form1_Paint (object sender, System.WinForms.PaintEventArgs e)
{
Graphics g = e.Graphics;
Rectangle rect = this.ClientRectangle;
Ezt a képet egy Image osztályba kell betöltenünk.
Image img = Image.FromFile(Application.StartupPath+"\\1.bmp");
Majd ezek után létrehozhatjuk a TextureBrush osztály egy példányát. Itt első paraméterként az imént létrehozott Image osztály kerül átadásra, másodikként pedig egy kitöltési módra utaló érték, melynek lehetséges értékeit a listBox1-ben soroltuk fel, így most is onnan vesszük az alapján, hogy mi lett kijelölve benne.
TextureBrush brush = new TextureBrush(img, (WrapMode)listBox1.SelectedIndex);
A betöltött képet lehetőségünk van egy adott szögben elforgatva megjeleníteni. Ehhez a TextureBrush osztály RotateTransform függvényét kell meghívnunk, paraméterként az elforgatás szögét adhatjuk meg, melyet most a trackBar1 komponens értéke szolgáltat.
brush.RotateTransform(trackBar1.Value);
A betöltött képet nagyíthatjuk, kicsinyíthetjük is kirajzolás előtt. Ehhez a ScaleTransform függvény nyújt segítséget. Két paramétert vár, ahol a nagyítás/kicsinyítés arányát kell megadnunk x, illetve y irányban.
if (checkBox1.Checked)
{
brush.ScaleTransform(2, 2);
}
A kép az alaphelyzethez képest el is tolható x, illetve y irányban a kirajzolás előtt. A TranslateTransform függvény két paraméterénél az eltolás mértéke adható meg x és y irányban.
brush.TranslateTransform(trackBar2.Value, 100 - trackBar3.Value);
Végül már nem marad más tennivalónk, mint kirajzolni a téglalapot az így létrehozott ecsettel és a Form teljes méretében.
g.FillRectangle(brush, rect);
}