Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.12.2015, 17:08   #1
armchair
Пользователь
 
Регистрация: 05.12.2015
Сообщений: 36
По умолчанию Delphi. Построение фигур с помощью Canvas.

Мне нужно изобразить шестиконечную звезду. ( это вроде как два наложенных друг на друга равносторонних треугольника, один острием вверх, другой вниз)

Вот часть кода для правильного 8-миугольника:

Код:
procedure TForm1.Edit3KeyPress(Sender: TObject; var Key: Char);
  var S, P: real;
  s1, s2: string;
begin
  if Key=#13 then begin
  val(Edit3.Text, y0, code);
  if code=0 then begin
  S:=2*sqrt(3)*sqr(r);
  P:=8*R;
   str(S:0:2, s1);
   str(P:0:2, s2);
   Label5.Caption:='Площадь восьмиуголника= '+s1+#13+
                                     'Периметр восьмиугольника= '+s2;
   Form2.Show;
   Form2.PaintBox1Paint(Sender);
   end
    else begin
    Edit3.Text:='';
    Edit3.SetFocus;
  end;
 end;
end;
end.
Также требуется вычислить периметр и площадь фигуры. Какие параметры и формулы вычисления нужны для моей звезды, я не знаю. Заранее спасибо.

Последний раз редактировалось Stilet; 24.12.2015 в 17:22.
armchair вне форума Ответить с цитированием
Старый 24.12.2015, 17:31   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Могу предложить из своих архивов:
Код:
procedure TForm1.FormPaint(Sender: TObject);
var cx,cy,rx,ry,x,r,y,angle,BeginAngle, rang, ang:real;n,e,i:integer;
 atp:array of TPoint;
begin
  cx:=Width / 2; cy:=Height/2;
  n:=12;  BeginAngle:=0;
  ang:=360/n;
  angle:=(2*pi*ang)/360; rang:=angle;
  SetLength(atp,n);
    for  i:=0  to n  do
    begin
     if odd(i) then r:=100 else r:=50;
     rx:=(cos(angle+BeginAngle));
     ry:=(sin(angle+BeginAngle));
     atp[i].X:=round(cx+r*(rx));
     atp[i].Y:=round(cy+r*(ry));
     angle:=angle+rang;
    end;
    Canvas.Polygon(atp);
    SetLength(atp,0);
end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 24.12.2015, 20:23   #3
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

это типа звезда Давида, штоли?

Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 24.12.2015, 20:47   #4
zvygin1964
Старожил
 
Аватар для zvygin1964
 
Регистрация: 19.06.2013
Сообщений: 2,463
По умолчанию

А может такая ?
Изображения
Тип файла: jpg звезда.jpg (5.3 Кб, 133 просмотров)
Репутация: полный "0"
zvygin1964 вне форума Ответить с цитированием
Старый 24.12.2015, 20:56   #5
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

атас и шухер!
дядьмиша осваивает фотожоп!
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Delphi.Canvas.Построение графиков в Image MariaD Помощь студентам 1 04.04.2013 06:38
построение фигур в delphi Nostalgia Помощь студентам 0 04.04.2011 16:42
Построение фигур Aleksandr Microsoft Office Excel 2 22.10.2009 21:08