Форум: "Начинающим";
Текущий архив: 2006.03.05;
Скачать: [xml.tar.bz2];
ВнизПомогите с графикой Найти похожие ветки
← →
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;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.01 c