GDI +: Как заполнить треугольник? - PullRequest
1 голос
/ 19 января 2011

Я хочу заполнить нижнюю левую половину прямоугольника (то есть треугольника):

alt text

с помощью LinearGradient, переходя от цвета к прозрачному: alt text

Заполнение половины прямоугольника:

alt text

Я знаю точку (x, y) и размер прямоугольника.

Если япопробуйте использовать LinearGradientBrush, чтобы выполнить мой линейный градиент:

brush = new LinearGradientBrush(
      MakePoint(0, y), //bottom left corner
      MakePoint(x, 0), //upper right corner
      MakeColor(255, c), //fully opaque color
      MakeColor(0, c)); //fully transparent color
graphics.FillRectangle(brush, MakeRect(0, 0, w, h));

Кисть для линейного градиента заполняет весь прямоугольник, что было бы хорошо, если бы оно продолжало заполнять остальную частьпрямоугольник с окончательным (прозрачным) цветом;но вместо этого он оборачивается:

alt text

У меня есть LinearGradientBrush, как мне нравится, я просто хочу FillTriangle или FillPolygon, а не FillRectangle.За исключением того, что нет FillTriangle или FillPolygon, только FillRectangle и FillEllipse.

См. Также

текст ссылки

1 Ответ

2 голосов
/ 19 января 2011

В графической библиотеке есть FillPolygon.Я думаю, что вы должны быть в состоянии сделать это так:

brush = new LinearGradientBrush(
      MakePoint(x, y), 
      MakePoint(0, h), 
      MakeColor(255, c), //fully opaque color
      MakeColor(0, c)); //fully transparent color

graphics.FillPolygon(brush, new PointF[] {
        new PointF(0, 0),
        new PointF(0, h),
        new PointF(w, h)
    });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...