Глава 25. Графический интерфейс устройства_______________________733
else
// Прямоугольник с закругленными углами dc.RoundRe ct (pnt, size,
TPoint(pnt.x + random(5),
pnt.у + random(5)));
break;
// Заливка case Fills:
// Заливка только когда счетчик кратен 10 // (заливка выполняется медленно и будет только отвлекать) if (! (usTickCount % 10).) {
pnt.x = random(rect.right);
pnt.у = random(rect.bottom);
dc.ExtFloodFillfpnt, TColor::Black, FLOODFILLBORDER);
' } ' '• break;
) }
Просматривая этот файл, вы, вероятно, заметили, что класс shapesAndFillswindow ведет себя более "непослушно" и отбрасывает сообщение paint () для каждого сообщения таймера. Это означает, что вывод в это окно происходит относительно быстрее по сравнению с Rectswindow. Поскольку для этого класса легко создать простое окно, метод TimerTicko снабжен возможностью очистить окно, которое заполняется снова каждые 10 секунд.
Как и для предыдущего класса, наиболее интересный код — это код для метода paint (). Он начинается с создания новых пера и кисти со случайными параметрами. Каждая пятая кисть — из числа штриховых, в этом случае рисуемые фигуры заполняются некоторой штриховкой, а не сплошным цветом.
Затем класс выбирает случайным образом фигуру и рисует ее в случайным образом выбранной области окна. Хотя в большинстве код достаточно простой, случай, когда выбирается заливка, стоит рассмотреть подробнее. В данном отрывке кода заливка выполняется не столь случайным образом, как рисование других фигур.
// Заливка case Fills:
// Заливка только когда счетчик кратен 10
// (заливка выполняется медленно и будет только отвлекать)
if (!(usTickCount % 10)) ( '
pnt.x = random(rect.right);
pnt. у = random (rect. bot t om );
dc.ExtFloodFill(pnt, TColor::Black, FLOODFILLBORDER);
} break;