Wyświetlenie punktów w oknie aplikacji.

0

DELPHI
Proszę o pomoc w rozwiązaniu mojego problemu.
Liczę na pomoc w sensie podania jakich komponentów i procedur użyć.
Mianowicie muszę napisać program, który będzie wyświetlał punkty ze StringGrida w oknie aplikacji, a następnie możliwe będzie narysowanie dowolnego wieloboku i zapisanie w osobnych plikach tekstowych punktów wewnątrz wieloboku i punktów na zewnątrz.
Kompletnie nie wiem jak się za to zabrać.
Będę wdzięczny za wszelkie wskazówki

0

Mianowicie muszę napisać program, który będzie wyświetlał punkty ze StringGrida w oknie aplikacji

Co to znaczy "wyświetlał punkty w oknie aplikacji"? Gdzie i w jaki sposób chcesz je wyświetlić?

Liczę na pomoc w sensie podania jakich komponentów i procedur użyć.

Możesz użyć dosłownie wszystkich kontrolek, na których możesz rysować; Jeśli nie chcesz bawić się z WinAPI to znajdź takie, które posiadają właściwość Canvas - będziesz mógł dość łatwo po nich rysować, bo ich obsługa jest banalna (możesz także rysować po kanwie formularza); Nada się do tego najbardziej TPaintBox z zakładki System (pod Delphi 7); Więcej informacji na temat obsługi TCanvas znajdziesz w lepszych kursach z sieci, czy tutorialach;

a następnie możliwe będzie narysowanie dowolnego wieloboku

Do rysowania wieloboków w klasie TCanvas służy metoda Polygon (z wypełnieniem) lub Polyline (bez wypełnienia):

procedure TForm1.Button1Click(Sender: TObject);
const
  { punkty dla trójkąta z wypełnieniem }
  POLY_POINTS: array [0 .. 2] of TPoint = ((X: 10; Y: 10),
                                           (X: 10; Y: 80),
                                           (X: 80; Y: 80));
begin
  with PaintBox1.Canvas do
  begin
    Pen.Color := clBlack;
    Brush.Color := clBlue;

    Polygon(POLY_POINTS);
  end;
end;
procedure TForm1.Button1Click(Sender: TObject);
const
  { punkty dla trójkąta bez wypełnienia }
  POLY_POINTS: array [0 .. 3] of TPoint = ((X: 10; Y: 10),
                                           (X: 10; Y: 80),
                                           (X: 80; Y: 80),
                                           (X: 10; Y: 10));
begin
  with PaintBox1.Canvas do
  begin
    Pen.Color := clBlack;
    Brush.Color := clBlue;

    Polyline(POLY_POINTS);
  end;
end;

Zauważ, że metoda Polyline potrzebuje o jeden punkt więcej, który będzie miał takie same współrzędne jak pierwszy, bo nie zamyka całości; Jak nie chcesz martwić się o kopiowanie pierwszego punktu to wykorzystaj Polygon i ustaw kolor wypełnienia na taki sam, jak tła;

i zapisanie w osobnych plikach tekstowych punktów wewnątrz wieloboku i punktów na zewnątrz.

Pliki tekstowe nie nadają się do przechowywania takich danych (ze względu na konieczność konwersji) - lepiej użyć plików amorficznych czy typowanych - ich obsługa nie jest trudna, a poczytać o nich możesz w tym serwisie w tym dziale Kompendium Programisty;

Nazwę języka/środowiska umieszczaj w tagach wątku, nie w treści;

0
furious programming napisał(a):

Zauważ, że metoda Polyline potrzebuje o jeden punkt więcej, który będzie miał takie same współrzędne jak pierwszy, bo nie zamyka całości
To jakiś bezsens. Jak chcesz mieć poligon bez wypełnionego środka to robisz.
Pen.Color := clBlack;
Brush.Style := bsClear;
Polygon(POLY_POINTS);
Nie rozumiem po kiego dodawać dodatkowy punkt aby za pomocą PolyLine zasymilować działanie Polygon.
To tak jak by proponować: exp(ln(x)+ln(x)) zamiast x*x - owszem działa tak samo i daje te same wyniki.

0
_13th_Dragon napisał(a)

To jakiś bezsens. Jak chcesz mieć poligon bez wypełnionego środka to robisz.
Pen.Color := clBlack;
Brush.Style := bsClear;
Polygon(POLY_POINTS);
Nie rozumiem po kiego dodawać dodatkowy punkt aby za pomocą PolyLine zasymilować działanie Polygon.

Też nie rozumiem, dlatego napisałem:

Furious Programming napisał(a)

Jak nie chcesz martwić się o kopiowanie pierwszego punktu to wykorzystaj Polygon i ustaw kolor wypełnienia na taki sam, jak tła;

Albo ustawić taki sam kolor jak tła (szkoda zachodu na wypełnianie), albo tak jak wspomniałeś - Brush.Style := bsClear;

Napisałem to żeby pytacz nie zdziwił się, że Polyline nie zamknie mu figury;

0

A ja mam dejavu, bo identyczny wątek był jakiś czas temu, ale nie mogę go teraz odnaleźć. Wtedy odpowiedziałem o ile pamiętam, że można skorzystać z TImage albo jakiegoś PaintBoxa i tym podobne, to już się nie będę powtarzał. Wystarczy, że autor wątku to chyba zrobił. Albo może dwie osoby dostały kiedyś lub w innym czasie podobne zadanie zaliczeniowe? :/

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