Глава 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;