C++ C++ C# C# ASP.NET Security ASP.NET Security ASM ASM Скачать Скачать Поиск Поиск Хостинг Хостинг  
  Программа для работы с LPT портом...
Язык: .NET — ©Alexey...
  "ASP.NET Atlas" – AJAX в исполнении Micro...
Язык: .NET — ©legigor@mail.ru...
  "Невытесняющая" Многопоточность...
Язык: C/C++ — ©...
  01.05.2010 — Update World C++: Сборник GPL QT исходников
  15.12.2007 — Весь сайт целиком можно загрузить по ссылкам из раздела Скачать
Хостинг:
Windows 2003, ASP.NET 2.0
бесплатный и от 80 руб./мес


   Отправить письмо
Кулабухов Артем, Беларусь




 34 - Методы и свойства канвы. То, что осталось. / С++ Builder 5 / Borland C++

Шаг 34 - Методы и свойства канвы. То, что осталось.

Осталось довольно много - кривые, массив пикселей, заливка... З аодин Шаг как раз можно рассмотреть.

Кривые

В компьютерной 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.


| |
Автор Аванесов Самвел.
[AD]