Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.03.05;
Скачать: CL | DM;

Вниз

Помогите с графикой   Найти похожие ветки 

 
pound ©   (2006-02-14 16:08) [0]

Помогите нарисовать дугу, пробовал Canvas.Arc--не подходит.
Мне нужна дуга с началом и концом в заданных точках и постоянным радиусом.
Может быть, у кого-нибудь есть что-нибудь подобное.
Андрей.


 
MBo ©   (2006-02-14 16:18) [1]

Дуг с началом и концом в заданных точках и определенного радиуса - бесконечное множество. Доопредели задачу полностью, потом из этих данных рассчитай параметры, необходимые для работы функции TCanvas.Arc


 
ssk ©   (2006-02-15 09:38) [2]

я пользовался вот такой процедурой:


type
 TPartArc = (paBig, paSmall); // направление дуги

procedure myArc(Cnv: TCanvas; _Start, _End: TPoint; Radius: integer;
 PartArc: TPartArc; // направление
 Thickness: integer = 1; // толщина
 Color: TColor = clBlack); // цвет
var
 x2, y2, a, d, x4, y4: double;
 q: integer;
begin
 Cnv.Brush.Style := bsClear;
 Cnv.Pen.Width := Thickness;
 Cnv.Pen.Color := Color;
 case PartArc of
   paBig: q := -1;
   paSmall: q := 1;
 end;
 with Cnv do
   begin
     x2 := _Start.X + (_End.X - _Start.X) / 2;
     y2 := _Start.Y + (_End.Y - _Start.Y) / 2;
     if (_Start.X - _End.X) <> 0 then
       a := arctan((_Start.Y - _End.Y) / (_Start.X - _End.X))
     else
       a := pi / 2;
     if a < 0 then
       q := -q;
     d := sqrt(Radius * Radius - (x2 - _Start.X) * (x2 - _Start.X) -
       (y2 - _Start.Y) * (y2 - _Start.Y));
     x4 := x2 + q * d * cos(pi - a);
     y4 := y2 + q * d * sin(pi - a);
     arc(round(x4 - Radius), round(y4 - Radius), round(x4 + Radius),
       round(y4 + Radius), _Start.X, _Start.Y, _End.X, _End.Y);
   end;
end;


 
MBo ©   (2006-02-15 09:49) [3]

>ssk ©   (15.02.06 09:38) [2]
Что будет при
myArc(Canvas,Point(50,100),Point(150,100),100,paSmall{или paBig});


 
ssk ©   (2006-02-15 11:03) [4]

попробовал. интересный эффект получается.
вообще-то нельзя все предусмотреть заранее. на самом деле мне вполне хватало того, чем я поделился в [2].



Страницы: 1 вся ветка

Текущий архив: 2006.03.05;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.039 c
1-1138859717
денвер
2006-02-02 08:55
2006.03.05
Работа с компонентом Edit


2-1140004057
MIXER
2006-02-15 14:47
2006.03.05
про Edit


1-1138716248
newsoft
2006-01-31 17:04
2006.03.05
Delphi 7 и MS Word 2003


2-1140302139
Volf_555
2006-02-19 01:35
2006.03.05
Как очистить TCanvas TImage?


4-1134626861
Alex_1234
2005-12-15 09:07
2006.03.05
Информация о версии в результирующем екзешнике...