国产睡熟迷奷白丝护士系列精品,中文色字幕网站,免费h网站在线观看的,亚洲开心激情在线

      <sup id="hb9fh"></sup>
          1. 千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機構(gòu)

            手機站
            千鋒教育

            千鋒學習站 | 隨時隨地免費學

            千鋒教育

            掃一掃進入千鋒手機站

            領(lǐng)取全套視頻
            千鋒教育

            關(guān)注千鋒學習站小程序
            隨時隨地免費學習課程

            當前位置:首頁  >  技術(shù)干貨  > GDI+Window詳解

            GDI+Window詳解

            來源:千鋒教育
            發(fā)布人:xqq
            時間: 2023-11-22 08:16:21 1700612181

            一、GDI Windows

            GDI+(Graphics Device Interface)Windows是微軟公司推出的一組圖像處理API。該API使用GDI的基本功能,加上更多的屬性和方法,可以完成更多高級圖像處理任務(wù)。它被廣泛應(yīng)用于Windows應(yīng)用程序的圖形處理,如游戲開發(fā)、廣告設(shè)計等。其中,開發(fā)GDI+Window應(yīng)用程序,需要注意以下幾點:

            1、創(chuàng)建GDI+Window

            
            HWND hWnd;    //窗口句柄
            HDC hdcMem;    //內(nèi)存設(shè)備上下文句柄 
            Graphics * graphics;    //圖形對象指針
            Image * image;    //繪制的圖片
            ULONG_PTR token;   //token值,用于初始化GDI+  
            
            //初始化GDI+
            GdiplusStartupInput gdiplusStartupInput;
            GdiplusStartup(&token, &gdiplusStartupInput, NULL);
            
            //創(chuàng)建窗口
            WNDCLASSEX wcex;
            wcex.cbSize = sizeof(WNDCLASSEX);
            wcex.style = CS_HREDRAW | CS_VREDRAW;
            wcex.lpfnWndProc = WndProc;
            wcex.cbClsExtra = 0;
            wcex.cbWndExtra = 0;
            wcex.hInstance = hInstance;
            wcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON));
            wcex.hCursor = LoadCursor(hInstance, MAKEINTRESOURCE(IDC_CURSOR));
            wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
            wcex.lpszMenuName = NULL;
            wcex.lpszClassName = szWindowClass;
            wcex.hIconSm = LoadIcon(wcex.hInstance, MAKEINTRESOURCE(IDI_SMALL));
            RegisterClassEx(&wcex);
            
            //創(chuàng)建窗口
            hWnd = CreateWindow(szWindowClass, szTitle, WS_OVERLAPPEDWINDOW,
                CW_USEDEFAULT, 0, CW_USEDEFAULT, 0, nullptr, nullptr, hInstance, nullptr);
            
            ShowWindow(hWnd, nCmdShow);
            UpdateWindow(hWnd);
            

            2、繪制GDI+圖像

            
            PAINTSTRUCT ps;
            HDC hdc = BeginPaint(hWnd, &ps);
            
            //創(chuàng)建內(nèi)存設(shè)備上下文
            hdcMem = CreateCompatibleDC(hdc);
            RECT rc;
            GetClientRect(hWnd, &rc);
            
            //創(chuàng)建Graphics對象
            graphics = new Graphics(hdcMem);
            
            //創(chuàng)建Image對象
            image = Image::FromFile(L"path_to_image");
            
            //繪制圖像
            graphics->DrawImage(image, 0, 0, rc.right - rc.left, rc.bottom - rc.top);
            
            //釋放資源
            delete image;
            delete graphics;
            DeleteDC(hdcMem);
            
            EndPaint(hWnd, &ps);
            

            3、處理GDI+事件

            
            LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
            {
                switch (message)
                {
                case WM_PAINT:
                    OnPaint(hWnd);
                    break;
                case WM_DESTROY:
                    GdiplusShutdown(token);
                    PostQuitMessage(0);
                    break;
                default:
                    return DefWindowProc(hWnd, message, wParam, lParam);
                }
                return 0;
            }
            
            void OnPaint(HWND hWnd)
            {
                PAINTSTRUCT ps;
                HDC hdc = BeginPaint(hWnd, &ps);
            
                //創(chuàng)建內(nèi)存設(shè)備上下文
                hdcMem = CreateCompatibleDC(hdc);
                RECT rc;
                GetClientRect(hWnd, &rc);
            
                //創(chuàng)建Graphics對象
                graphics = new Graphics(hdcMem);
            
                //創(chuàng)建Image對象
                image = Image::FromFile(L"path_to_image");
            
                //繪制圖像
                graphics->DrawImage(image, 0, 0, rc.right - rc.left, rc.bottom - rc.top);
            
                //釋放資源
                delete image;
                delete graphics;
                DeleteDC(hdcMem);
            
                EndPaint(hWnd, &ps);
            }
            

            二、GDI+Window阻止關(guān)機

            在使用GDI+Window的時候,可能會遇到突然關(guān)機的情況,這時就需要防止突然關(guān)機引起的數(shù)據(jù)損壞??梢允褂肧etConsoleCtrlHandler函數(shù),注冊一個控制信號處理函數(shù)。例如:

            
            BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType)
            {
                GdiplusShutdown(token);
                switch (dwCtrlType)
                {
                case CTRL_C_EVENT:
                    printf("Ctrl-C event\n\n");
                    return TRUE;
                case CTRL_CLOSE_EVENT:
                    printf("Ctrl-Close event\n\n");
                    return TRUE;
                case CTRL_BREAK_EVENT:
                    printf("Ctrl-Break event\n\n");
                    return TRUE;
                case CTRL_LOGOFF_EVENT:
                    printf("Ctrl-Logoff event\n\n");
                    return TRUE;
                case CTRL_SHUTDOWN_EVENT:
                    printf("Ctrl-Shutdown event\n\n");
                    return TRUE;
                default:
                    return FALSE;
                }
            }
            
            int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
            {
                //初始化GDI+
                GdiplusStartupInput gdiplusStartupInput;
                GdiplusStartup(&token, &gdiplusStartupInput, NULL);
            
                //處理控制信號
                SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleCtrlHandler, TRUE);
            
                //創(chuàng)建窗口...
            }
            

            三、GDI+Window內(nèi)存不能讀

            如果在使用GDI+Window時,遇到“內(nèi)存不能讀”或者“內(nèi)存泄漏”的情況,可能是由于內(nèi)存分配過多、內(nèi)存越界、變量未初始化等問題引起的,可以使用內(nèi)存泄漏檢測工具進行檢查。例如,使用CrtDbg工具進行檢測:

            
            #define _CRTDBG_MAP_ALLOC
            #include 
            #include 
            
            int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
            {
                //_CrtSetDbgFlag(_CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF);
                _CrtSetReportMode(_CRT_WARN, _CRTDBG_MODE_FILE);
                _CrtSetReportFile(_CRT_WARN, _CRTDBG_FILE_STDERR);
            
                //創(chuàng)建窗口...
            
                _CrtDumpMemoryLeaks();
                return 0;
            }
            

            四、GDI Window是怎么按出來的

            GDI+Window是通過對GDI的拓展可以實現(xiàn)更多圖像處理任務(wù)。在Windows操作系統(tǒng)中,可以通過CreateWindowEx函數(shù)來創(chuàng)建一個窗口,并使用GDI+對圖像進行處理。

            五、GDI+Windowed

            GDI+Windowed是指使用GDI+對Windows窗口進行圖像處理。它可以用來實現(xiàn)游戲開發(fā)、廣告設(shè)計等,也可以用來進行圖像展示。

            六、GDI+ Windows未關(guān)閉

            在使用GDI+Window時,可以遇到突然關(guān)機的情況。為了防止突然關(guān)機引起的數(shù)據(jù)損壞,可以使用SetConsoleCtrlHandler函數(shù),注冊一個控制信號處理函數(shù)。例如:

            
            BOOL WINAPI ConsoleCtrlHandler(DWORD dwCtrlType)
            {
                GdiplusShutdown(token);
                switch (dwCtrlType)
                {
                case CTRL_C_EVENT:
                    printf("Ctrl-C event\n\n");
                    return TRUE;
                case CTRL_CLOSE_EVENT:
                    printf("Ctrl-Close event\n\n");
                    return TRUE;
                case CTRL_BREAK_EVENT:
                    printf("Ctrl-Break event\n\n");
                    return TRUE;
                case CTRL_LOGOFF_EVENT:
                    printf("Ctrl-Logoff event\n\n");
                    return TRUE;
                case CTRL_SHUTDOWN_EVENT:
                    printf("Ctrl-Shutdown event\n\n");
                    return TRUE;
                default:
                    return FALSE;
                }
            }
            
            int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
            {
                //初始化GDI+
                GdiplusStartupInput gdiplusStartupInput;
                GdiplusStartup(&token, &gdiplusStartupInput, NULL);
            
                //處理控制信號
                SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleCtrlHandler, TRUE);
            
                //創(chuàng)建窗口...
            }
            

            七、GDI Windows什么意思

            GDI(Graphics Device Interface)是Windows操作系統(tǒng)中的一個圖形設(shè)備接口,是操作系統(tǒng)和圖形設(shè)備之間的一個數(shù)據(jù)交換接口。它提供了一個標準的方式,將應(yīng)用程序提供的圖形數(shù)據(jù)發(fā)送到圖形設(shè)備上進行顯示。而GDI+ Windows是微軟公司推出的一組圖像處理API,使用GDI的基本功能,加上更多的屬性和方法,可以完成更多高級圖像處理任務(wù)。

            八、GDI Window是什么意思

            GDI(Graphics Device Interface)是Windows操作系統(tǒng)中的一個圖形設(shè)備接口,是操作系統(tǒng)和圖形設(shè)備之間的一個數(shù)據(jù)交換接口。而GDI+ Window是對GDI的拓展,可以實現(xiàn)更多高級圖像處理任務(wù)的一組圖像處理API。

            tags: g*power
            聲明:本站稿件版權(quán)均屬千鋒教育所有,未經(jīng)許可不得擅自轉(zhuǎn)載。
            10年以上業(yè)內(nèi)強師集結(jié),手把手帶你蛻變精英
            請您保持通訊暢通,專屬學習老師24小時內(nèi)將與您1V1溝通
            免費領(lǐng)取
            今日已有369人領(lǐng)取成功
            劉同學 138****2860 剛剛成功領(lǐng)取
            王同學 131****2015 剛剛成功領(lǐng)取
            張同學 133****4652 剛剛成功領(lǐng)取
            李同學 135****8607 剛剛成功領(lǐng)取
            楊同學 132****5667 剛剛成功領(lǐng)取
            岳同學 134****6652 剛剛成功領(lǐng)取
            梁同學 157****2950 剛剛成功領(lǐng)取
            劉同學 189****1015 剛剛成功領(lǐng)取
            張同學 155****4678 剛剛成功領(lǐng)取
            鄒同學 139****2907 剛剛成功領(lǐng)取
            董同學 138****2867 剛剛成功領(lǐng)取
            周同學 136****3602 剛剛成功領(lǐng)取
            相關(guān)推薦HOT