БлогNot. C++ Builder: цветные шарики одним кликом

C++ Builder: цветные шарики одним кликом

Ну, любит ребёнок цветные шарики, вот и родилось в свободную минутку. Нарисовать на канве красивый шарик можно примерно вот таким кодом:

const int R=100; //Радиус шарика в пикселах

TForm *ptForm = (TForm *)Sender;
for (int x=X-R; x<X+R+1; x++)
for (int y=Y-R; y<Y+R+1; y++) {
 int D=Distance (x,y,X,Y);
 int I =(D<R ? 255-RoundTo(D*255./R,0) : 0);
 if (I) ptForm->Canvas->Pixels[x][y] = (TColor)RGB (I,I,I); //цвет очередного пиксела
}

где Distance - функция вычисления пиксельного расстояния между двумя точками:

#include <Math.hpp>
int __fastcall Distance (int x1,int y1,int x2,int y2) {
 return RoundTo(Power(Power(x1-x2,2)+Power(y1-y2,2),0.5),0);
}

То есть, мы просто делаем интенсивность цвета пиксела обратно пропорциональной расстоянию до центра окружности (X,Y).

Цвет формы предполагается чёрным, а шарик здесь получится серый, если нужны другие цвета, следует по другому закону получать цвет очередного пиксела, например, RGB (I,0,0); даст красные шары :)

Вот кусочек скриншота приложения:

Рисование цветного шарика
Рисование цветного шарика

Приложение запускается в полноэкранном режиме. Левая кнопка мыши - нарисовать шарик, правая - стереть всё, Alt+F4 - закрыть приложение. Нарисовать шарик, "слишком близкий" к уже имеющемуся шарику (пересекающийся с ним) нельзя, вместо рисования раздастся "бип".

Клавиши 1, 2 и 3 (или клики по цифрам 1-2-3 на панельке вверху слева) - включить/выключить красную, синюю и зелёную цветовые компоненты, это позволяет шарику менять цвет. Чтобы не получалось чёрных шариков на чёрном, можно одновременно отключать не больше 2 цветов из трёх. При попытке включить третий цвет - тоже "бип".

Какие цвета включены, а какие отключены, видно как раз на панельке. Там же видно общее число уместившихся на Вашем экране шариков.

 Скачать исполняемый файл в архиве .ZIP (234 Кб)

 Скачать исходники проекта C++ Builder в архиве .ZIP (4 Кб)

Ну, можно ещё поиграть, кто больше шариков разместит на одном экране :) У меня на "мелком" разрешении экрана 1024x768 навскидку вышло всего 17.

29.10.2013, 23:05 [12148 просмотров]


теги: c++ графика программирование цвет детское builder

К этой статье пока нет комментариев, Ваш будет первым