Помощь - Поиск - Пользователи - Календарь
Полная версия: закрашивание плоского треугольника
Форум «Всё о Паскале» > Pascal, Object Pascal > Задачи
XaMMaX
Собственно читал много мануалов, но так и не понял =( Я прошу более простое обеснения желательно кусок кода! Задача сама сделать зарисованный треугольник и крутить его(ну с этим я сам справлюсь).
Malice
Если крутить сам сможешь, то закрасите еще проще:
Код
p: array [1..3] of pointtype;
..
p[i].x:=..;
p[i].y:=..;
..
fillPoly(3, p);

Цвет закраски через setfillstyle. Только закраска будет однородной, если надо с оттенками,то придется закраску самому делать.
XaMMaX
А можно коментарий к коду что такое массив p? И не только код , но и обьянения , но всё равно спасиба =)
Да и что за процедура fillPoly(3, p); ?
volvo
А у тебя что, Help не установлен?

Цитата(TP Help)
FillPoly (procedure) (Graph unit)
Fills a polygon, using the scan converter

Declaration:
procedure FillPoly(NumPoints: Word; var PolyPoints);

Remarks:
PolyPoints is an untyped parameter that contains the coordinates of each intersection in the polygon. NumPoints specifies the number of coordinates in PolyPoints. A coordinate consists of two words, an X and a Y value.

FillPoly calculates all the horizontal intersections, and then fills the polygon using the current fill style and color defined by SetFillStyle or SetFillPattern. The outline of the polygon is drawn in the current line style and color as set by SetLineStyle.
Там же есть и пример использования, из которого все становится ясно...
XaMMaX
А что это может работать только на 3 точки =\ ?
volvo
Почему же только на 3? Первый параметр задает количество точек...

Только надо быть уверенным, что размер массива с координатами по крайней мере НЕ МЕНЬШЕ чем
2 * SizeOf(Word) * NumPoints
XaMMaX
Спасибо с этой задачей справлюсь теперь =)
XaMMaX
Блин, а чё fillpoly только с массивами работает =( Мне нужно просто fillpoly(4,sx1,sy1,sx2,sy2,sx3,sy3,sx4,sy4);
Это возможно реализовать ?
Бродяжник
Ну, можно, как надстройку...
Код
procedure FillPoly4(x1,y1,x2,y2,x3,y3,x4,y4: word);
var Foo: array[1..4] of pointtype;
begin
  Foo[1].x := x1;
  Foo[1].y := y1;
  ...
  Foo[4].x := x4;
  Foo[4].y := y4;

  FillPoly(4,Foo);
end;

что-то типа того
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.