ewka110 Opublikowano 25 Października 2008 Udostępnij Opublikowano 25 Października 2008 czy ktos moglby mi powiedziec jak w delphi napisac program, który będzie mi wyswietlal kwadrat a w nim nastepne kwadraty tylko obrocone? czy ma to zrobic za pomocą pętli? Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Konrad-GM Opublikowano 25 Października 2008 Udostępnij Opublikowano 25 Października 2008 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 Więcej opcji udostępniania...
Snake Opublikowano 26 Października 2008 Udostępnij Opublikowano 26 Października 2008 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 Więcej opcji udostępniania...
ewka110 Opublikowano 26 Października 2008 Autor Udostępnij Opublikowano 26 Października 2008 ok dzięki Wam bardzo Odnośnik do komentarza Udostępnij na innych stronach Więcej opcji udostępniania...
Rekomendowane odpowiedzi
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ę