STARTDRAW ... ENDDRAW procedure

Purpose: STARTDRAW ... ENDDRAW defines a block inside which graphics drawing produces a persistent image, that is, an image which does not have to be repainted when it is moved behind other windows or when other windows are moved on top of the image.


 Syntax:

 hDestDC = STARTDRAW(Canvas)
    'Graphics drawing functions are placed here
 ENDDRAW(Canvas, hDestDC)

 Parameters:

  • hDestDC is a HDC handle of the specified device context (DC) into which the bitmap is placed.
  • Canvas is a HWND handle to a BCX_BITMAP.

Example:


 GUI "PGUDB"
 
 CONST IDC_BM1 = 101
 
 '*******************************************************************
 GLOBAL Form AS HWND
 GLOBAL Butt1 AS HWND
 GLOBAL Canvas AS HWND
 '*******************************************************************
 
 SUB FORMLOAD
   Form = BCX_FORM ("Persistent Graphics Using Dynamic Bitmaps", 0,0, 400, 250)
   Canvas = BCX_BITMAP(0, Form, IDC_BM1, 10, 5, 300, 200)
   Butt1 = BCX_BUTTON("Draw Stuff", Form, 1, 350, 5)
 
   CENTER (Form)
   SHOW (Form)
 END SUB
 
 BEGIN EVENTS
   SELECT CASE CBMSG
   CASE WM_COMMAND
 
     SELECT CASE CBCTL
     CASE 1
       DIM RAW hDestDC AS HDC
       hDestDC = STARTDRAW(Canvas)
       BCX_FLOODFILL(0,0,0,RGB(RND*255,RND*255,RND*255),RGB(RND*255,RND*255,RND*255),hDestDC)
       BCX_PSET (0,2,2,0,hDestDC)
       BCX_LINE(0,5,5,300,250,RGB(RND*255,RND*255,RND*255),hDestDC)
       BCX_LINETO (0,300,5,RGB(RND*255,RND*255,RND*255),hDestDC)
       BCX_ARC(0,90,90,130,150,95,95,130,70,RGB(RND*255,RND*255,RND*255),hDestDC)
       BCX_RECTANGLE(0,40,40,100,100,RGB(RND*255,RND*255,RND*255),TRUE,hDestDC)
       BCX_ROUNDRECT(0,120,80,100,150,20,20,RGB(RND*255,RND*255,RND*255),TRUE,hDestDC)
       BCX_ELLIPSE(0,330,10,60,100,RGB(RND*255,RND*255,RND*255),TRUE,hDestDC)
       ENDDRAW (Canvas, hDestDC)
     END SELECT
 
   END SELECT
 END EVENTS