Разница между командами Circle, FillCircle, DrawCircle
uses GraphABC;
begin
Window.SetSize(500, 250);
Pen.SetWidth(4);
Pen.SetColor(clRed);
Brush.SetColor(clBlue);
DrawCircle(100, 100, 60); //рисует окружность
Circle(250, 100, 60); //рисует круг
FillCircle(400, 100, 60); // закрашивает внутреннюю часть круга
end.
Пример работы с SetPixel
uses GraphABC;
var x, y: integer; begin
Window.SetSize(256, 256); //Задаем размер окна
//Проходим по всем точкам окна и закрашиваем их
for x := 0 to 255 do
for y := 0 to 255 do
setpixel(x, y, rgb(x, 150, y));
end.
Команда setpixel(x, y, rgb(x, 150, y)); позволяет задавать цвет каждого пикселя в зависимости от его позиции на экране.
Попробуйте заменить строчку setpixel(x, y, rgb(x, 150, y)); на :setpixel(x, y, rgb(x, y, x+y)); setpixel(x, y, rgb(x, y, x*y));
Простая анимация с помощью sleep. Рисуем луну
uses GraphABC;
var x: integer;
begin
Window.SetSize(800, 600);
Window.Clear(clDarkBlue);
LockDrawing;
for x := 550 downto 150 do
begin
Brush.SetColor(clGold); // рисуем диск Луны
FillCircle(400, 200, 100);
Brush.SetColor(clDarkBlue); // рисуем темно-синюю тень
FillCircle(x, 200, 100);
Redraw;
sleep(10); // задержка в 10 милисекунд
end;
end.
Команда sleep(10) создает задержку в 10 милисекунд.
Команды LockDrawing и Redraw обеспечивают анимацию без "мерцания"
Попробуйте убрать команды LockDrawing и Redraw из программы. Посмотрите, что получилось?
Комментариев нет:
Отправить комментарий