Tryb graficzny i zamalowanie figury

Tryb graficzny i zamalowanie figury
ZE
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 lat
0

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

Kopiuj
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:

Kopiuj
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?

edytowany 2x, ostatnio: flowCRANE
ER
  • Rejestracja:około 17 lat
  • Ostatnio:około 11 lat
0
Kopiuj
 
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);
_13th_Dragon
Pytającemu chodziło o typowe crt w pascalu.
ZE
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 lat
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" ;/

_13th_Dragon
odpowiedź od @ergo dotyczy zupełnie innej technologii.
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:dzień
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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
olesio
  • Rejestracja:około 17 lat
  • Ostatnio:około 3 lata
  • Lokalizacja:Szczecin
  • Postów:4191
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.

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

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

//...

Pozdrawiam.
edytowany 1x, ostatnio: olesio
_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:dzień
0
Kopiuj
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.


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.
ZE
  • Rejestracja:około 17 lat
  • Ostatnio:około 5 lat
0
_13th_Dragon napisał(a):
Kopiuj
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?

_13th_Dragon
  • Rejestracja:ponad 19 lat
  • Ostatnio:dzień
0

Krótsze linie oraz arc()


Wykonuję programy na zamówienie, pisać na Priv.
Asm/C/C++/Pascal/Delphi/Java/C#/PHP/JS oraz inne języki.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.