!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> GDIPlus

导航�?/b>  GdiPlus Classes >

GdiPlus Classes

上一�? ></a><a href=返回章节概述下一�? ></a>
     </span>
    </td>
  </tr>
  <tr><td colspan=

CGdiPlus 是适用于FreeBASIC�?C++ GdiPlus类�?/p>

 

方法文档中的代码段使用下列模板:

 

' ########################################################################################

' Microsoft Windows

' Contents: GDI+ - Template

' The GDI+ examples use the following templatem using the CWindow framework.

' Compiler: FreeBasic 32 & 64 bit

' Copyright (c) 2016 José Roca. Freeware. Use at your own risk.

' THIS CODE AND INFORMATION IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER

' EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES OF

' MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.

' ########################################################################################

 

#define UNICODE

#INCLUDE ONCE "Afx/CWindow.inc"

#INCLUDE ONCE "Afx/CGdiPlus/CGdiPlus.inc"

#INCLUDE ONCE "Afx/CGraphCtx.inc"

USING Afx

 

CONST IDC_GRCTX = 1001

 

DECLARE FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _

                        BYVAL hPrevInstance AS HINSTANCE, _

                        BYVAL szCmdLine AS ZSTRING PTR, _

                        BYVAL nCmdShow AS LONG) AS LONG

 

 END WinMain(GetModuleHandleW(NULL), NULL, COMMAND(), SW_NORMAL)

 

DECLARE FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT

 

' ========================================================================================

' Put here your code

' ========================================================================================

SUB Example_Code (BYVAL hdc AS HDC)

 

 ' // Create a graphics object from the window device context

 DIM graphics AS CGpGraphics = hdc

 ' // Get the DPI scaling ratio

 DIM rxRatio AS SINGLE = graphics.GetDpiX / 96

 DIM ryRatio AS SINGLE = graphics.GetDpiY / 96

 ' // Set the scale transform

 graphics.ScaleTransform(rxRatio, ryRatio)

 

 ' // Put here more code

 

END SUB

' ========================================================================================

 

' ========================================================================================

' Main

' ========================================================================================

FUNCTION WinMain (BYVAL hInstance AS HINSTANCE, _

                BYVAL hPrevInstance AS HINSTANCE, _

                BYVAL szCmdLine AS ZSTRING PTR, _

                BYVAL nCmdShow AS LONG) AS LONG

 

 ' // 设置处理DPI感知

 ' // The recommended way is to use a manifest file

 AfxSetProcessDPIAware

 

 ' // Initialize GDI+

 DIM token AS ULONG_PTR = AfxGdipInit

 

 ' // Creates the main window

 DIM pWindow AS CWindow

 ' -or- DIM pWindow AS CWindow = "MyClassName" (use the name that you wish)

 pWindow.Create(NULL, "GDI+ Template", @WndProc)

 pWindow.WindowStyle = WS_OVERLAPPED OR WS_CAPTION OR WS_SYSMENU

 ' // Sizes it by setting the wanted width and height of its client area

 pWindow.SetClientSize(430, 250)

 ' // Centers the window

 pWindow.Center

 

 ' // 添加图形控件

 DIM pGraphCtx AS CGraphCtx = CGraphCtx(@pWindow, IDC_GRCTX, "", 0, 0, pWindow.ClientWidth, pWindow.ClientHeight)

 pGraphCtx.Clear BGR(255, 255, 255)

 ' // Get the memory device context of the graphic control

 DIM hdc AS HDC = pGraphCtx.GetMemDc

 ' // Draw the graphics

 Example_Code(hdc)

 

 ' // Displays the window and dispatches the Windows messages

 FUNCTION = pWindow.DoEvents(nCmdShow)

 

 ' // Shutdown GDI+

 AfxGdipShutdown(token)

 

END FUNCTION

' ========================================================================================

 

' ========================================================================================

' Main window procedure

' ========================================================================================

FUNCTION WndProc (BYVAL hwnd AS HWND, BYVAL uMsg AS UINT, BYVAL wParam AS WPARAM, BYVAL lParam AS LPARAM) AS LRESULT

 

 SELECT CASE uMsg

 

    CASE WM_COMMAND

       SELECT CASE LOWORD(wParam)

          CASE IDCANCEL

             ' // If ESC key pressed, close the application by sending an WM_CLOSE message

             IF HIWORD(wParam) = BN_CLICKED THEN

                SendMessageW hwnd, WM_CLOSE, 0, 0

                EXIT FUNCTION

             END IF

       END SELECT

 

         CASE WM_DESTROY

       ' // Ends the application by sending a WM_QUIT message

       PostQuitMessage(0)

       EXIT FUNCTION

 

 END SELECT

 

 ' // Default processing of Windows messages

 FUNCTION = DefWindowProcW(hwnd, uMsg, wParam, lParam)

 

END FUNCTION

' ========================================================================================