
| Arquivo: gfx.prg |
|
#include "hbgtinfo.ch" #include "hbgfx.ch" PROCEDURE Main() LOCAL nFontHeight, nFontWidth LOCAL nTop, nLeft, nHeight, nWidth, nColor, nSec := Seconds() LOCAL cWelcome #if defined( __HBSCRIPT__HBSHELL ) # if defined( __PLATFORM__WINDOWS ) hbshell_gtSelect( "GTWVT" ) # elif defined( __PLATFORM__UNIX ) hbshell_gtSelect( "GTXWC" ) # endif #endif IF ! hb_gtInfo( HB_GTI_ISGRAPHIC ) ? "You are using a non graphics capable gt:" ? "GT" + hb_gtVersion() QUIT ENDIF IF hb_gtInfo( HB_GTI_DESKTOPWIDTH ) > 1000 hb_gtInfo( HB_GTI_FONTWIDTH, 12 ) hb_gtInfo( HB_GTI_FONTSIZE, 24 ) ENDIF nFontHeight := hb_gtInfo( HB_GTI_FONTSIZE ) nFontWidth := hb_gtInfo( HB_GTI_FONTWIDTH ) cWelcome := "Welcome to the World of Harbour multiplatform Graphics!" + " (GT" + hb_gtVersion() + ")" SetColor( "n/w" ) @ 0, 0 SAY Space( MaxCol() + 1 ) @ 1, 0 SAY PadC( cWelcome, MaxCol() + 1 ) @ 2, 0 SAY Space( MaxCol() + 1 ) hb_gtInfo( HB_GTI_WINTITLE, "Cross-GT, multiplatform graphics demo" ) PutFrame( ; nFontHeight / 2, ; MaxCol() / 2 * nFontWidth - Len( cWelcome ) / 2 * nFontWidth - nFontWidth, ; nFontHeight * 2 + nFontHeight / 2, ; nFontWidth + MaxCol() / 2 * nFontWidth + Len( cWelcome ) / 2 * nFontWidth, ; hb_gfxMakeColor( 0, 0, 0 ), hb_gfxMakeColor( 255, 255, 255 ) ) DO WHILE Inkey() == 0 nTop := Int( hb_Random( 3.1 * nFontHeight, hb_gtInfo( HB_GTI_SCREENHEIGHT ) ) ) nLeft := Int( hb_Random( hb_gtInfo( HB_GTI_SCREENWIDTH ) ) ) nHeight := Int( hb_Random( 251 ) ) nWidth := Int( hb_Random( 251 ) ) nColor := hb_gfxMakeColor( Int( hb_Random( 32, 256 ) ), Int( hb_Random( 32, 256 ) ), Int( hb_Random( 32, 256 ) ) ) SWITCH Int( hb_Random( 1, 9 ) ) CASE 1 hb_gfxLine( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nColor ) EXIT CASE 2 hb_gfxRect( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nColor ) EXIT CASE 3 hb_gfxFilledRect( nTop, nLeft, nTop + nHeight, nLeft + nWidth, nColor ) EXIT CASE 4 nTop += nHeight hb_gfxCircle( nTop, nLeft, nHeight, nColor ) EXIT CASE 5 nTop += nHeight hb_gfxFilledCircle( nTop, nLeft, nHeight, nColor ) EXIT CASE 6 nTop += nHeight hb_gfxEllipse( nTop, nLeft, nHeight, nWidth, nColor ) EXIT CASE 7 nTop += nHeight hb_gfxFilledEllipse( nTop, nLeft, nHeight, nWidth, nColor ) EXIT CASE 8 nHeight %= 64 IF nHeight % 2 == 1 nHeight++ ENDIF hb_gfxText( nTop, nLeft, "Hello", nColor, nHeight ) EXIT ENDSWITCH IF Seconds() - nSec > 3 hb_gfxFloodFill( 0, 0, nColor ) nSec := Seconds() ENDIF ENDDO RETURN FUNCTION PutFrame( nTop, nLeft, nBottom, nRight, nColor1, nColor2 ) hb_gfxRect( nTop, nLeft, nBottom, nRight, nColor1 ) hb_gfxRect( nTop + 1, nLeft + 1, nBottom - 1, nRight - 1, nColor2 ) hb_gfxLine( nTop + 1, nLeft + 1, nTop + 1, nRight - 1, nColor2 ) hb_gfxLine( nTop + 2, nLeft + 1, nBottom - 1, nLeft + 1, nColor2 ) RETURN NIL |