Последние записи
- Перенести программу из Delphi в Lazarus
- Определить текущую ОС
- Автоматическая смена языка (раскладки клавиатуры)
- Сравнение языков на массивах. Часть 2
- wprintf как напечатать кириллицу
- Взаимодействие через командную строку
- Сравнение языков на массивах. Часть 1
- Сравнение языков по скорости
- Чтение огромных xml-файлов
- Как в Python+Selenium webdriver открыть новую вкладку в уже открытом браузере?
Интенсив по Python: Работа с API и фреймворками 24-26 ИЮНЯ 2022. Знаете Python, но хотите расширить свои навыки?
Slurm подготовили для вас особенный продукт! Оставить заявку по ссылке - https://slurm.club/3MeqNEk
Online-курс Java с оплатой после трудоустройства. Каждый выпускник получает предложение о работе
И зарплату на 30% выше ожидаемой, подробнее на сайте академии, ссылка - ttps://clck.ru/fCrQw
17th
Ноя
Вращение шестиугольника в Делфи 7
Posted by obzor under Delphi
Нужно создать приложение, в котором шестиугольник вращается относительно своего центра против часовой стрелки. Фигура имеет черный контур толщиной в 2 пикселя. Внутренняя заливка меняется с красной на зеленую, затем на синюю после каждого поворота фигуры.
Аватар
Лови. Только есть подозрение — не поверит преподаватель
lBitmap: TBitmap;
lColor: TColor;
lCorner,lRadius: Integer;
lRectBitmap,lRectPaintBox: TRect;
...
procedure TForm1.FormCreate(Sender: TObject);
var i: Integer;
begin
DoubleBuffered:=True;
if PaintBox1.Width<PaintBox1.Height then i:=PaintBox1.Width else i:=PaintBox1.Height;
i:=Trunc(i*0.8);
lBitmap:=TBitmap.Create;
lBitmap.Width:=i;
lBitmap.Height:=i;
lColor:=clRed;
lCorner:=0;
lRadius:=i div 2;
lRectBitmap:=Rect(0,0,i,i);
lRectPaintBox:=Rect((PaintBox1.Width-i) div 2, (PaintBox1.Height-i) div 2,
(PaintBox1.Width-i) div 2 + i, (PaintBox1.Height-i) div 2 + i);
TrackBar1.Position:=4;
Timer1.Interval:=50;
end;
procedure TForm1.PaintBox1Paint(Sender: TObject);
var i: Integer;
Points: array[0..5] of TPoint;
xCorner: Integer;
begin
xCorner:=lCorner;
for i:=0 to 5 do begin
Points[ i].X:=lRadius+Trunc(Cos(xCorner*Pi/180)*lRadius);
Points[ i].Y:=lRadius-Trunc(Sin(xCorner*Pi/180)*lRadius);
Inc(xCorner,60);
end;
lBitmap.Canvas.Brush.Style:=bsClear;
lBitmap.Canvas.Brush.Color:=Color;
lBitmap.Canvas.FillRect(lRectBitmap);
lBitmap.Canvas.Pen.Color:=clBlack;
lBitmap.Canvas.Pen.Width:=2;
lBitmap.Canvas.Brush.Style:=bsSolid;
lBitmap.Canvas.Brush.Color:=lColor;
lBitmap.Canvas.Polygon(Points);
PaintBox1.Canvas.CopyRect(lRectPaintBox,lBitmap.Canvas,lRectBitmap);
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
Inc(lCorner,TrackBar1.Position);
if lCorner>=360 then begin
lCorner:=0;
if lColor=clBlue then lColor:=clRed
else if lColor=clGreen then lColor:=clBlue
else lColor:=clGreen;
end;
PaintBox1.Repaint;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
Timer1.Enabled:=not Timer1.Enabled;
if Timer1.Enabled then Button1.Caption:='Стоп' else Button1.Caption:='Старт';
end;
Похожие статьи
Купить рекламу на сайте за 1000 руб
пишите сюда - alarforum@yandex.ru
Да и по любым другим вопросам пишите на почту
пеллетные котлы
Пеллетный котел Emtas
Наши форумы по программированию:
- Форум Web программирование (веб)
- Delphi форумы
- Форумы C (Си)
- Форум .NET Frameworks (точка нет фреймворки)
- Форум Java (джава)
- Форум низкоуровневое программирование
- Форум VBA (вба)
- Форум OpenGL
- Форум DirectX
- Форум CAD проектирование
- Форум по операционным системам
- Форум Software (Софт)
- Форум Hardware (Компьютерное железо)