Jak narysować łuk w zadanym poło?żeniu(Canvas)

0

Witam.
Mam taki problem, z którym nie mogę sobie poradzić... Wydaje się byc banalny, a jednak...
Otóż chciałbym narysować na canvasie łuk linią o grubości 2.(canvas.pen.width:=2).
Ale, punkt początkowy musi się znajdować w określonym przeze mnie punkcie, np. (10,10), zaś końcowy w punkcie np. (100,100). Znany jest też promień tego łuku (krzywej)...

Reasumując. Potrzebuję PILNIE narysować linię w kształcie łuku od punktu (10,10) do punktu (100,100), o zadanym promieniu, np 10.
Jak to zrobić? nic mi nie wychodzi... Czego użyć? Arc, czy co?
Bardzo proszę o szybką odpowiedź...
Pozdr, pepe

0

Arc i F1?

0

Arc i F1?

Cześć, nie powiem żebyś mi pomógł... Nie pisał bym na forum gdybym nie umiał nacisnąć klawisza F1!

Pomoc oczywiście czytałem, ale nie potrafie zidentyfikować parametrów funkcji Arc...(x1,y1-x4,yr4).(także w literaturze mi dostępnej nic nie wyczytałem - tutaj podaja tylko kopie przykładu z helpa, który nijak ma się do rzeczywistości, rysując łuk gdzie popadnie...).. Jeśli ktoś wie prosze o konstruktywną podpowiedź, jak to narysować dla podanych wcześniej przeze mnie współrzędnych przykładowych... Posty w stylu Drajwera nic nie wnoszą...
Pozdr

0

Arc i F1?

Cześć, nie powiem żebyś mi pomógł... Nie pisał bym na forum gdybym nie umiał nacisnąć klawisza F1!

Pomoc oczywiście czytałem, ale nie potrafie zidentyfikować parametrów funkcji Arc...(x1,y1-x4,yr4).(także w literaturze mi dostępnej nic nie wyczytałem - tutaj podaja tylko kopie przykładu z helpa, który nijak ma się do rzeczywistości, rysując łuk gdzie popadnie...).. Jeśli ktoś wie prosze o konstruktywną podpowiedź, jak to narysować dla podanych wcześniej przeze mnie współrzędnych przykładowych... Posty w stylu Drajwera nic nie wnoszą...
Pozdr

TCanvas.Arc() + F1:

Draws an arc on the image along the perimeter of the ellipse bounded by the specified rectangle.

Delphi syntax:

procedure Arc(X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer);

C++ syntax:

void __fastcall Arc(int X1, int Y1, int X2, int Y2, int X3, int Y3, int X4, int Y4);

Description

Use Arc to draw an elliptically curved line with the current Pen. The arc traverses the perimeter of an ellipse that is bounded by the points (X1,Y1) and (X2,Y2). The arc is drawn following the perimeter of the ellipse, counterclockwise, from the starting point to the ending point. The starting point is defined by the intersection of the ellipse and a line defined by the center of the ellipse and (X3,Y3). The ending point is defined by the intersection of the ellipse and a line defined by the center of the ellipse and (X4, Y4).

Note: On Windows 9x or Windows ME, the sums X1 + X2 and Y1 + Y2 cannot exceed 32768. Also, the sum X1 + X2 + Y1 + Y2 cannot exceed 32768.

On NT or Windows 2000, the drawing direction can be changed to clockwise using the Windows API call SetArcDirection.

1

ARC(x1,y1,x2,y2,x3,y3,x4,y4)- za pomocą tej instrukcji możesz narysowac krzywą w prostokącie którego współrzędne to x1,y1 i x2,y2. Poczatęk Twojej krzywej to x3,y3 a koniec krzywej x4 i y4.

0

ARC(x1,y1,x2,y2,x3,y3,x4,y4)- za pomocą tej instrukcji możesz narysowac krzywą w prostokącie którego współrzędne to x1,y1 i x2,y2. Poczatęk Twojej krzywej to x3,y3 a koniec krzywej x4 i y4.

Dobra dzieki za podpowiedzi... Rzeczywiscie, jaest jak mowisz Watson. Blizsze spotkanie z Canvasem rozwiało mój brak wiedzy.
Pozdr

0

To jeszcze raz ja.
Powiedzmy, że udało mi się narysować ten łuk dla współrzędnych (0,-prom,50,prom,0,0,50,0)...
Czyli na prostej o dlugosci 50 narysowal sie łuk o promieniu Prom.

Ale męczę się z takim czymś. Jak naryoswać ten łuk, który opiera się na prostej o współrzędnych (xpocz,ypocz) oraz (xkonc,ykonc) dla dowolnego położenia w układzie wsp. kartezjanskim... , np Poczotek prostej (10,10), koniec (80,-90) o promieniu 15... Mi nie wychodzi.

Wystarczy ze zmienie polozenie prostej, na inne to łuk sie rysuje zle, lub w ogole, lub jego konce nie zaczynaj i nie konczo sie w punktach poczotka i konca prostej...

Zatem prosze o jakies wskazowki, jak przeliczac te wspolrzedne aby sie luk zawsze dobrze rysowal(zakladam ze srodek ukladu wsplrzednych lezy w srodku geometrycznym Image, tj.: sx:=image1.width div 2;, sy:=image1.Height div 2;

Prosze o pomoc, dzieki, pepe

0
SrodekX := (xpocz+xkonc)/2.
SrodekY := (ypocz+ykonc)/2.
Arc(SrodekX-Promien, SrodekY-Promien, SrodekX+Promien, SrodekY+Promien, xpocz, ypocz, xkonc, ykonc);

1 użytkowników online, w tym zalogowanych: 0, gości: 1