Постановка задачи. Рисование снежинки на поверхности формы в точке, в которой пользователь нажал кнопку мыши. Демонстрирует использование процедуры PolyLine, а также процедуры обработки события OnMouseDown для получения координаты точки, в которой нажата кнопка мыши. При нажатии левой кнопки мыши цвет снежинки синий, а при нажатии правой – голубой (рис. 19).
Рис. 19. Результат работы программы «Снежинки»
Реализация. Напишем процедуру snowflake рисования снежинки. Входными параметрами для нее являются координаты x0, y0 центра снежинки и r − радиус снежинки.
procedure snowflake(x0,y0,r: integer);
// x0,y0 - координаты центра снежинки
// r - радиус снежинки
var p : array[1..21] of TPoint; // Массив координат лучей и впадин
a: integer; // Угол в градусах между осью Оx и прямой, // соединяющей центр снежинки и конец луча или впадины
i: integer;
begin
a := 18; // Строим от правого горизонтального луча
for i:=1 to 20 do
begin
if (i mod 2 = 0) then
begin // Впадина
p[i].x := x0+Round(r/6*cos(a*2*pi/360));
p[i].y:=y0-Round(r/6*sin(a*2*pi/360));
end
else
begin // Луч
p[i].x:=x0+Round(r*cos(a*2*pi/360));
p[i].y:=y0-Round(r*sin(a*2*pi/360));
end;
a := a+18;
end;
p[21].x := p[1].x; // Замкнуть контур снежинки
p[21].y := p[1].y;
Form1.Canvas.Polyline(p); // Начертить снежинку
end;
На событие OnMouseDown напишем код, в котором проверяем, какая кнопка была нажата.