Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 06.03.2024, 12:24
vineexx vineexx вне форума
Прохожий
 
Регистрация: 06.03.2024
Сообщения: 1
Версия Delphi: Delphi 10.1
Репутация: 10
Восклицание Помогите нарисовать

Помогите выполнить задание, использовав 4 цикла for
https://ibb.co/nRbJGZt
Ответить с цитированием
  #2  
Старый 06.03.2024, 21:32
Vladimr Vladimr вне форума
Прохожий
 
Регистрация: 17.03.2021
Сообщения: 41
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Какая именно задача? Сделать программу что бы делала как на картинке?
Похоже пытаетесь повторить из какого-то учебника, тогда как называется учебник, что бы посмотреть его, вдруг решение есть уже на страницах этого учебника. Там случайно на предыдущих страницах не описано как это сделать?

Ну а если задали задачу, то сколько кругов должно быть по диагонали? Какой минимальный и максимальный размер? Какой размер формы для рисования?
Ответить с цитированием
  #3  
Старый 06.03.2024, 23:28
xchgeaxeax xchgeaxeax вне форума
Прохожий
 
Регистрация: 11.05.2023
Сообщения: 15
Версия Delphi: D7, Laz v2.2.6
Репутация: 10
По умолчанию

Не знаю где там 4 цикла. Можно обойтись и одном, чтобы меньше считать одинаковых значений.
Код:
procedure TForm1.FormPaint(Sender: TObject);
var
  BMP: TBitmap;
  Center, DeltaXY, ArcPos: TPoint;
  Delta, i, k, Min, Max: LongInt;
begin
  BMP := TBitmap.Create;
  BMP.Width  := ClientWidth;
  BMP.Height := ClientHeight;
  Center.x := BMP.Width  shr 1;
  Center.y := BMP.Height shr 1;
  if Center.x <  Center.y then Min := Center.x else Min := Center.y;
  if Center.x >= Center.y then Max := Center.x else Max := Center.y;
  Delta := (Max - Min) shr 1;
  if Delta = 0 then begin
    DeltaXY.x := 1;
    DeltaXY.y := 1;
  end else begin
    DeltaXY.x := Center.x div Delta;
    DeltaXY.y := Center.y div Delta;
  end;
  BMP.Canvas.Brush.Color := Canvas.Brush.Color;
  BMP.Canvas.FillRect(ClientRect);
  with BMP.Canvas do for i := Min div 3 downto 1 do begin
    k := Delta - 3 * Delta * i div Min;
    ArcPos.x := 3 * i * DeltaXY.x shr 3;
    ArcPos.y := 3 * i * DeltaXY.y shr 3;
    Arc(Center.x - k - ArcPos.x, Center.y - k - ArcPos.y, Center.x + k - ArcPos.x, Center.y + k - ArcPos.y, 0, 5760);
    Arc(Center.x - k - ArcPos.x, Center.y - k + ArcPos.y, Center.x + k - ArcPos.x, Center.y + k + ArcPos.y, 0, 5760);
    Arc(Center.x - k + ArcPos.x, Center.y - k - ArcPos.y, Center.x + k + ArcPos.x, Center.y + k - ArcPos.y, 0, 5760);
    Arc(Center.x - k + ArcPos.x, Center.y - k + ArcPos.y, Center.x + k + ArcPos.x, Center.y + k + ArcPos.y, 0, 5760);
  end;
  BMP.Canvas.Arc(Center.x - Delta, Center.y - Delta, Center.x + Delta, Center.y + Delta, 0, 5760);
  Canvas.Draw(0, 0, BMP);
  FreeAndNil(BMP);
end;
Изображения
Тип файла: png Screenshot_20240306_234856.png (37.8 Кбайт, 8 просмотров)

Последний раз редактировалось xchgeaxeax, 06.03.2024 в 23:51.
Ответить с цитированием
Этот пользователь сказал Спасибо xchgeaxeax за это полезное сообщение:
Vagners (10.03.2024)
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:53.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter