Porady: wypełnianie kafelków w obrębie kształtu obrazem

Podobnie jak kafelki można umieścić obok siebie, aby pokryć podłogę, prostokątne obrazy można umieścić obok siebie w celu wypełnienia (kafelka) kształtu. Aby utworzyć kafelek wnętrza kształtu, użyj pędzla tekstury. Podczas konstruowania TextureBrush obiektu jeden z argumentów przekazywanych do konstruktora jest obiektem Image . Gdy używasz pędzla tekstury do malowania wnętrza kształtu, kształt jest wypełniony powtarzającymi się kopiami tego obrazu.

Właściwość TextureBrush trybu zawijania obiektu określa, jak obraz jest zorientowany, gdy jest powtarzany w siatce prostokątnej. Możesz ustawić, że wszystkie kafelki w siatce mają taką samą orientację, lub możesz przerzucić obraz z jednej pozycji siatki do następnej. Przerzucanie może być poziome, pionowe lub oba. W poniższych przykładach pokazano tiling z różnymi typami przerzucania.

Aby na kafelku obraz

  • W tym przykładzie użyto następującego obrazu 75×75 do kafelka prostokąta 200×200.

The tile image that shows a red house and a tree.

  • Na poniższej ilustracji przedstawiono sposób kafelka prostokąta z obrazem. Należy pamiętać, że wszystkie kafelki mają taką samą orientację; nie ma przerzucania.

A rectangle tiled with the image using the same orientation for all tiles.

Image image = new Bitmap("HouseAndTree.gif");
TextureBrush tBrush = new TextureBrush(image);
Pen blackPen = new Pen(Color.Black);
e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));
Dim image As New Bitmap("HouseAndTree.gif")
Dim tBrush As New TextureBrush(image)
Dim blackPen As New Pen(Color.Black)
e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))

Aby przerzucić obraz w poziomie podczas układania

  • W tym przykładzie użyto tego samego obrazu 75×75, aby wypełnić prostokąt 200×200. Tryb zawijania jest ustawiony na przerzucanie obrazu w poziomie. Na poniższej ilustracji przedstawiono sposób kafelka prostokąta z obrazem. Pamiętaj, że w miarę przechodzenia z jednego kafelka do następnego w danym wierszu obraz jest przerzucany w poziomie.

A rectangle tiled with the image flipped horizontally.

Image image = new Bitmap("HouseAndTree.gif");
TextureBrush tBrush = new TextureBrush(image);
Pen blackPen = new Pen(Color.Black);
tBrush.WrapMode = WrapMode.TileFlipX;
e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));
Dim image As New Bitmap("HouseAndTree.gif")
Dim tBrush As New TextureBrush(image)
Dim blackPen As New Pen(Color.Black)
tBrush.WrapMode = WrapMode.TileFlipX
e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))

Aby przerzucić obraz w pionie podczas układania

  • W tym przykładzie użyto tego samego obrazu 75×75, aby wypełnić prostokąt 200×200. Tryb zawijania jest ustawiony na przerzucanie obrazu w pionie.

    Image image = new Bitmap("HouseAndTree.gif");
    TextureBrush tBrush = new TextureBrush(image);
    Pen blackPen = new Pen(Color.Black);
    tBrush.WrapMode = WrapMode.TileFlipY;
    e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
    e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));
    
    Dim image As New Bitmap("HouseAndTree.gif")
    Dim tBrush As New TextureBrush(image)
    Dim blackPen As New Pen(Color.Black)
    tBrush.WrapMode = WrapMode.TileFlipY
    e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
    e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))
    
    

Aby przerzucić obraz w poziomie i w pionie podczas układania kafelków

  • W tym przykładzie użyto tego samego obrazu 75×75 do kafelka prostokąta 200×200. Tryb zawijania jest ustawiony na przerzucanie obrazu zarówno w poziomie, jak i w pionie. Na poniższej ilustracji pokazano, jak prostokąt jest kafelkowany przez obraz. Pamiętaj, że w miarę przechodzenia z jednego kafelka do następnego w danym wierszu obraz jest przerzucany w poziomie i w miarę przechodzenia z jednego kafelka do następnego w danej kolumnie obraz jest przerzucany w pionie.

A rectangle tiled with the image flipped horizontally and vertically.

Image image = new Bitmap("HouseAndTree.gif");
TextureBrush tBrush = new TextureBrush(image);
Pen blackPen = new Pen(Color.Black);
tBrush.WrapMode = WrapMode.TileFlipXY;
e.Graphics.FillRectangle(tBrush, new Rectangle(0, 0, 200, 200));
e.Graphics.DrawRectangle(blackPen, new Rectangle(0, 0, 200, 200));
Dim image As New Bitmap("HouseAndTree.gif")
Dim tBrush As New TextureBrush(image)
Dim blackPen As New Pen(Color.Black)
tBrush.WrapMode = WrapMode.TileFlipXY
e.Graphics.FillRectangle(tBrush, New Rectangle(0, 0, 200, 200))
e.Graphics.DrawRectangle(blackPen, New Rectangle(0, 0, 200, 200))

Zobacz też