Осталось довольно много - кривые, массив пикселей, заливка... З аодин Шаг как раз можно рассмотреть. Кривые В компьютерной 2d графике кривые обычно строятся как кривые Безье, по математическим формулам. Задаются начало и конец кривой, и промежуточные точки, определяющие изгиб. Общая техника кривой такова - начальная кривая задается четырьмя точками: первая и четвертая - опорные, вторая и третья - промежуточные, добавляющие линии изгиб. Каждая последующая кривая, добавляемая к концу предыдущей, нуждается только в трех точках - первая опорная является последней опорной предыдущей кривой. Чтоб было понятней, приведу листинг: using namespace Windows; TPoint points[7]; points[0]=TPoint(0,0); points[1]=TPoint(800,30); points[2]=TPoint(0,40); points[3]=TPoint(550,400); points[4]=TPoint(350,200); points[5]=TPoint(550,400); points[6]=TPoint(0,500); Canvas->PolyBezier(points,6);
Хитроватая кривая. Еще к кривым относится функция (пардон, метод) PolyBezierTo. Делает то же самое, что и только что рассмотренная, еще дополнительно перемещает перо. То есть предыдущая его не перемещает. Заливка Один вариант заливки мы уже рассмотрели - метод FillRect. Но он не такой интересный как этот - FloodFill. Этот заливает область, начиная из данной точки, ну, типа PaintBrush. Первые два аргумента - естественно координаты точки, откуда начинать надо, третий - цвет, а четвертый - способ заливки. Бывает fsSurface и fsBorder. Первый заливает область с цветом, заданным параметром Color, ограниченную другим цветом. Второй заливает область, НЕ имеющую цвета Color, до цвета Color. Надо сказать, очень просто и понятно :). Ellipse Как водится, эллипс :). Данные методы вычерчивают эллипс, как если бы он был вписан в заданныей прямоугольник. Кто забыл школьный курс, напомню, что вписанным эллипс считается тогда, когда стороны прямоугльника касаются эллипса. Именно координаты этого прямоугольника и указывается в обращении. RoundRect Делает прямоугольник со скругленными концами. Общий алгоритм такой - выводится обыкновенный прямоугольник по первым четырем параметрам, затем его углы преобразуются к скругленным, если бы это был эллипс с характеристиками последних двух параметров. Звучит сложно, а на деле довольно легко. Pixels Первое - это свойство типа двухразмерный массив (матрица), содержащий цвета пикселей канвы. Первая размерность - X, вторая - Y. Надо отметить, что доступ к элементам массива значительно менее эффективен, чем обращение к соответствующим методам. Поэтому я бы не порекомендовал самодельные процедуры типа - "Проведение горизонтальной линии". Это конечно очень оригинально, но лучше использовать LineTo. |