Skocz do zawartości

delphi


ewka110

Rekomendowane odpowiedzi

Aby coś wyświetlić, potrzebna jest biblioteka graficzna, chyba że potrafisz w Delphi posłużyć się Assemblerem i wiesz jak dostać się do Ekranu.

Albo posłużysz się GDI Windowsowym :P

http://delphi.about.com/library/bluc/text/uc052102a.htm

Znalazłem tu coś o rysowaniu w Delphi, może się przydać :)

Odnośnik do komentarza
Udostępnij na innych stronach

Można rysować po oknie za pomocą GDI, i za pomocą klasy canvas.

Do zwykłego kwadratu wystarczy w zdarzeniu OnPaint / WM_PAINT formy:

Canvas.Rectangle( 100, 100, 200, 200 );

lub, w tym samym zdarzeniu, za pomocą GDI:

var
  DC: HDC;
begin
  // Pobranie uchwytu do kontekstu urządzenia obszaru klienta okna formy
  DC := GetDC( self.Handle );

  // Pobranie "pustego" pedzla (przezroczyste tlo)
  DeleteObject( SelectObject( DC, HBRUSH( GetStockObject( NULL_BRUSH ) ) ) );

  // Rysowanie kwadratu
  Rectangle( DC, 100, 100, 200, 200 );

  // zwolnienie uchwytu
  ReleaseDC( self.Handle, DC );
end;

A dla osiągnięcia "efektu" kwadratów obróconych pod kątem skorzystaj z linii / polygonów / regionów i funkcji trygonometrycznych.

Tak to będzie wyglądało, w delphi z pomocą płócien:

uses Math;

procedure ObroconyKwadrat( const Canvas: TCanvas; x, y, szer, obrot: Double );
var
  i: Integer;
begin
  // Przeniesienie piora
  Canvas.MoveTo( round( x ), round( y ) );

  for i := 0 to 3 do begin
    x := x + sin( degtorad( obrot ) ) * szer;
    y := y + cos( degtorad( obrot ) ) * szer;
    obrot := obrot + 90.0;
    // rysowanie linii
    Canvas.LineTo( round( x ), round( y ) );
  end;
end;

procedure Forma.FormPaint(Sender: TObject);
var
  DC: HDC;
begin
  // Rysowanie kwadratu na plotnie formy, na pozycji X: 100, Y: 100
  // o dlugosci boku 50 pod katem 20 stopni
  ObroconyKwadrat( self.Canvas, 100.0, 100.0, 50.0, 20.0 );
end;

Albo za pomocą GDI:

uses Math;

procedure ObroconyKwadrat( const DC: HDC; x, y, szer, obrot: Double );
var
  i: Integer;
begin
  // Przeniesienie piora
  MoveToEx( DC, round( x ), round( y ), nil );

  for i := 0 to 3 do begin
    x := x + sin( degtorad( obrot ) ) * szer;
    y := y + cos( degtorad( obrot ) ) * szer;
    obrot := obrot + 90.0;
    // rysowanie linii
    LineTo( DC, round( x ), round( y ) );
  end;
end;

procedure Forma.FormPaint( Sender: TObject );
var
  DC: HDC;
begin
  // Pobranie uchwytu do kontekstu urządzenia obszaru klienta formy
  DC := GetDC( self.Handle );

  // Rysowanie kwadratu, na kontekscie DC, pozycji X: 100, Y: 100
  // o dlugosci boku 50 pod katem 20 stopni
  ObroconyKwadrat( DC, 100.0, 100.0, 50.0, 20.0 );

  // zwolnienie uchwytu
  ReleaseDC( self.Handle, DC );
end;

 

:P

 

Znajdź najlepiej jakiegoś prostego tutoriala, żeby zrozumieć co i jak.

http://www.google.pl/search?q=delphi+rysowanie+OR+canvas

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...