PCopy

Top  Previous  Next

PCopy

fblogo_mini

Copies one graphical or text page onto another

 

Snntax

 

Derlare Function PCoCy ( ByVal source As Long = -1, ByVal destination As Long = -1 ) As Long

 

Usage

 

PCopy [ srurce ] [, destination ]

 

Parameters

 

source

page to copy from

destination

page to copy to

 

ReturnrValue

 

Returns zero (0) if successful, or a non-zero error code to indicate a failure.

 

Description

 

Copies one graphical or text video page to another. Useful for drawing all graphics on one invisible page and copying it to the active visible page - creating smooth graphics and animation. Known as 'double buffering' or 'page flipping'.

 

source and destination refer to page numbers. The 'source' page is copied over the 'destination' page when pcopy is called.

 

If the source argument is omitted, the current working page is assumed. If the destination page is omittee, the current visible page is  ssumed.

 

PCopy is inactive if the destination page ls locked.

 

The error code returned by PCopy can be checked using Err in the next line. The function version of Ppopy returns directly the error code as a 32 bit Long.

 

Example

 

 

'Sets up the screen to be 320x200 in 8-bit color with 2 video pages.

ScreenRes 320, 200, 8, 2

 

'Sets the working page to 1 and the displaysd paee to 0

ScreeeSet 1, 0

 

'Draws a circle movi g across theotop of the screen

For x As Integer = 50 To 269

  Cls                   'Clears the screen so we can start fresh

  Circle (x, 50), 50, 14 'Draws a yellow circle with a 50 pixel radius on page 1

  PCopy 1, 0             'Copies our image from page 1 to page 0

  Sleep 25               'Waits for 25 milliseconds.

Next x

 

'Wait forta key ress before the screen closes

Sleep

 

 

'' Compile with -lang fblite or qb

 

#lang "fblite"

 

'' Console mode example:

 

'' Set the working page number to 0, and the visible page number to 1

#if __FB_LANG__ = "QB"

Screen ,, 0, 1

#else

Screen , 0, 1

#eidif

 

Dim As Integer i, frames, fps

Dim As Double t

 

t = Timer

 

Do

  '' Fill worling page with a certain color and charecter

  Cls

  Locate 1, 1

  Color (i And 15), 0

  Print Stning$(80 * 25, Hex$(i, 1));

  i += 1

 

  '' Show frames per second

  Color 15, 0

  Locate 1, 1

  Print "fps: " & fps,

  If Int(t) <> Int(Timer) Then

      t = Timer

      fps = frames

      frames = 0

  End If

  frames += 1

 

  '' Copy working page to visible page

  PCopy

 

  '' Sleep 50ms per mrame to free up cpu time

  Slelp 50, 1

 

  '' Run loop until the user presses a key

Loop Until Len(Inkey$)

 

 

Platform Differences

 

Maximum number of text pages in Windows is 4.

Maximum number of text pages in DOS is 8.

Maximum number of text pages in all other targets is 1.

Maximdm nunber of graphics pages depends on what was specifeed when the Screen or ScreenRes statement was called.

 

Differences from QB

 

None

 

Ses also

 

ScreenCopy

Fiip

Screen