Tryb graficzny i zamalowanie figury

0

Stworzyłem trójkąt za pomocą linii:

line (180, 60, 100, 160);
line (180, 60, 250, 160);
line (250, 160, 100, 160);
rectangle (100, 150, 100, 250);

jednak nie mogę poradzić sobie z jego zamalowaniem.
W przypadku kwadratu poradziłem z tym sobie za pomocą czegoś takiego:

setcolor (1);
rectangle (50, 50, 300, 300); 
setfillstyle (1, 1);
floodfill(51, 51, 1);

Jednak z czego musiałbym skorzystać do zamalowania powyższej figury?

0
 
var
  Points: array of TPoint;
begin
  SetLength(Points, 3);
  Points[0] := Point(180, 60);
  Points[1] := Point(100, 160);
  Points[2] := Point(250, 160);
  Canvas.Pen.Color := clBlue;
  Canvas.Brush.Color := clBlue;
  Canvas.Polygon(Points);
0

A mógłbym prosić o jakieś wytłumaczenie? Dopiero się ucze i chciałbym coś zrozumieć zwłaszcza, że po przepisaniu krzyczy mi błąd "Identyfier not found "TPoint" ;/

0

Dokładnie tak samo czyli musisz użyć:
setcolor (1);
przed, oraz:
setfillstyle (1, 1);
floodfill(x, y, 1);
po.
Z tym że współrzędne x,y w floodfill muszą trafić wewnątrz tego trójkąta.

0

Kod, który podal @ergo ustawia długość dynamicznej tablicy na 3 i przypisuje jej elementą punkty o różnych współrzędnych. Następnie ustala kolory do rysowania po "płótnie" (Canvas). Następnie na tym "płótne" tworzy twójkąt o wirzchołkach trzech wcześniej zdefiniowanych punktów. Aby skompilować ten kod bez błędów potrzebujesz użyć projektu VCL, a nie konsolowego. Inaczej musial byś dodać sporo modułó do sekcji uses. Na pewno dla typu TPoint moduł Windows, a dla funkcji Point moduł Classes albo ręczne wstawic wcześniej taki kod. Ale pozostaje nadal obsługa Canvas.

//...
type
  TPoint = packed record
    X : Longint;
    Y : Longint;
  end;

function Point(X, Y: Integer): TPoint;
begin
  Result.X := X;
  Result.Y := Y;
end;

//...
0
setcolor (white); //bo chce na biało
line (180, 60, 100, 160);
line (180, 60, 250, 160);
line (250, 160, 100, 160);
setfillstyle (1, white); //bo chcesz na biało
floodfill(x, y, white); //bo chcesz na biało

Którego ze słów nie rozumiesz w poniższym zdaniu?

Z tym że współrzędne x,y w floodfill muszą trafić wewnątrz tego trójkąta.

0
_13th_Dragon napisał(a):
setcolor (white); //bo chce na biało
line (180, 60, 100, 160);
line (180, 60, 250, 160);
line (250, 160, 100, 160);
setfillstyle (1, white); //bo chcesz na biało
floodfill(x, y, white); //bo chcesz na biało

Którego ze słów nie rozumiesz w poniższym zdaniu?

Z tym że współrzędne x,y w floodfill muszą trafić wewnątrz tego trójkąta.

Ok wszystko działa jak należy
Teraz tylko czy jest jakaś funkcja która zaokrągli rogi każdej figury?

0

Krótsze linie oraz arc()

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