Главная страница
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.027 c
2-1140218222
AnyCase
2006-02-18 02:17
2006.03.05
Имеет ли смысл минимизировать число модулей в uses ?


1-1138708460
Zidane5
2006-01-31 14:54
2006.03.05
Импорт из данных Excel в таблицу DBGrid


3-1136549778
Andron.Ru
2006-01-06 15:16
2006.03.05
Oracle sys_refcursor


11-1120806487
Jumper
2005-07-08 11:08
2006.03.05
Курсор в RichEdit


1-1138982654
Apollon_604
2006-02-03 19:04
2006.03.05
Прозрачность компонент