2011-01-19 2 views
1

я хочу, чтобы заполнить нижнюю левую половину аа прямоугольника (т.е. треугольника):GDI +: Как заполнить треугольник?

alt text

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

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

alt text

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

Если я попробовать использовать 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.

Смотрите также

link text

+1

Какую версию .NET вы используете? Я определенно вижу метод FillPolygon в графическом объекте. http://msdn.microsoft.com/en-us/library/89sks199.aspx –

+0

Что, что вы знаете, есть * один. Я поклялся, что могу найти только «FillRectangle» и «FillEllipse». (http://msdn.microsoft.com/en-us/library/ms535958(v=VS.85).aspx) Хотя, я не использую .NET, это GDI +. Перефразируйте это как ответ, и я его приму. –

+0

+1 У меня был тот же вопрос, я нашел это в Google. Так что +1, мы, дебилы, должны держаться вместе! – MarkJ

ответ

2

Существует 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) 
    }); 
+1

Хотя я идиот, я думаю, что этот вопрос может быть полезен, так как 'FillTriangle' может быть реализован как' FillPolygon '. И хотя ваш синтаксис, вероятно, для .NET, его можно легко перевести на GDI +. –

 Смежные вопросы

  • Нет связанных вопросов^_^