Udostępnij za pośrednictwem


Porady: wypełnianie kształtów teksturą obrazu

Kształt zamknięty można wypełnić teksturą przy użyciu Image klasy i TextureBrush klasy.

Przykład

Poniższy przykład wypełnia wielokropek obrazem. Kod tworzy Image obiekt, a następnie przekazuje adres tego Image obiektu jako argument do konstruktora TextureBrush . Trzecia instrukcja skaluje obraz, a czwarta instrukcja wypełnia wielokropek wielokrotnymi kopiami skalowanego obrazu.

W poniższym kodzie Transform właściwość zawiera przekształcenie zastosowane do obrazu przed jego narysem. Załóżmy, że oryginalny obraz ma szerokość 640 pikseli i wysokość 480 pikseli. Przekształcenie zmniejsza obraz do 75×75, ustawiając wartości skalowania poziomego i pionowego.

Uwaga

W poniższym przykładzie rozmiar obrazu to 75×75, a rozmiar wielokropka to 150×250. Ponieważ obraz jest mniejszy niż wielokropek wypełniany, wielokropek jest kafelkiem obrazu. Tiling oznacza, że obraz jest powtarzany w poziomie i w pionie do momentu osiągnięcia granicy kształtu. Aby uzyskać więcej informacji na temat układania kafelków, zobacz How to: Tile a Shape with an Image (Instrukcje: kafelek kształtu z obrazem).

Image image = new Bitmap("ImageFile.jpg");
TextureBrush tBrush = new TextureBrush(image);
tBrush.Transform = new Matrix(
   75.0f / 640.0f,
   0.0f,
   0.0f,
   75.0f / 480.0f,
   0.0f,
   0.0f);
e.Graphics.FillEllipse(tBrush, new Rectangle(0, 150, 150, 250));
Dim image As New Bitmap("ImageFile.jpg")
Dim tBrush As New TextureBrush(image)
tBrush.Transform = New Matrix( _
   75.0F / 640.0F, _
   0.0F, _
   0.0F, _
   75.0F / 480.0F, _
   0.0F, _
   0.0F)
e.Graphics.FillEllipse(tBrush, New Rectangle(0, 150, 150, 250))

Kompilowanie kodu

Powyższy przykład jest przeznaczony do użycia z formularzami Windows Forms i wymaga PaintEventArgseparametru , który jest parametrem Paint programu obsługi zdarzeń.

Zobacz też