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:
|
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