Узорные кисти в WPF - PullRequest
       1

Узорные кисти в WPF

4 голосов
/ 28 декабря 2010

Я борюсь с созданием различных кистей, чтобы заполнить различные формы или в качестве фона. Вот несколько шаблонов, с которыми я борюсь за создание:

  1. <<<< >>>>
  2. <| <| <| <|> |> |> |>
  3. ////////
  4. \\\\
  5. ||||||||

Мне удалось создать \\\, ////// и |||||| с линейным градиентом, но первые два вызывают у меня проблемы. Кстати, второй треугольник.

Любые предложения или помощь будет принята с благодарностью.

Ответы [ 2 ]

5 голосов
/ 28 декабря 2010

Вы можете создавать составные градиенты, используя кисть для рисования. Например, вот градиент алмаза, который вы можете вставить в окно для тестирования:

<Window.Background>
    <DrawingBrush>
        <DrawingBrush.Drawing>
            <DrawingGroup>
                <DrawingGroup.Children>
                    <GeometryDrawing>
                        <GeometryDrawing.Geometry>
                            <RectangleGeometry Rect="0,0,100,100"/>
                        </GeometryDrawing.Geometry>
                        <GeometryDrawing.Brush>
                            <LinearGradientBrush StartPoint="0,0" EndPoint="1,1">
                                <GradientStop Offset="0.0" Color="Black" />
                                <GradientStop Offset="1.0" Color="White" />
                            </LinearGradientBrush>
                        </GeometryDrawing.Brush>
                    </GeometryDrawing>
                    <GeometryDrawing>
                        <GeometryDrawing.Geometry>
                            <RectangleGeometry Rect="100,0,100,100"/>
                        </GeometryDrawing.Geometry>
                        <GeometryDrawing.Brush>
                            <LinearGradientBrush StartPoint="1,0" EndPoint="0,1">
                                <GradientStop Offset="0.0" Color="Black" />
                                <GradientStop Offset="1.0" Color="White" />
                            </LinearGradientBrush>
                        </GeometryDrawing.Brush>
                    </GeometryDrawing>
                    <GeometryDrawing>
                        <GeometryDrawing.Geometry>
                            <RectangleGeometry Rect="0,100,100,100"/>
                        </GeometryDrawing.Geometry>
                        <GeometryDrawing.Brush>
                            <LinearGradientBrush StartPoint="0,1" EndPoint="1,0">
                                <GradientStop Offset="0.0" Color="Black" />
                                <GradientStop Offset="1.0" Color="White" />
                            </LinearGradientBrush>
                        </GeometryDrawing.Brush>
                    </GeometryDrawing>
                    <GeometryDrawing>
                        <GeometryDrawing.Geometry>
                            <RectangleGeometry Rect="100,100,100,100"/>
                        </GeometryDrawing.Geometry>
                        <GeometryDrawing.Brush>
                            <LinearGradientBrush StartPoint="1,1" EndPoint="0,0">
                                <GradientStop Offset="0.0" Color="Black" />
                                <GradientStop Offset="1.0" Color="White" />
                            </LinearGradientBrush>
                        </GeometryDrawing.Brush>
                    </GeometryDrawing>
                </DrawingGroup.Children>
            </DrawingGroup>
        </DrawingBrush.Drawing>
    </DrawingBrush>
</Window.Background>

ASCII-графика недостаточно выразительна, но, возможно, именно это вы имели в виду <<< >>>:

alt text

5 голосов
/ 28 декабря 2010

Вам необходимо использовать TileBrush.Определите рисунок одной плитки с Drawing или изображением и повторите его с DrawingBrush или ImageBrush.Документация по этому вопросу довольно обширна, примеры должны дать вам некоторые идеи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...