麻豆黑色丝袜jk制服福利网站-麻豆精品传媒视频观看-麻豆精品传媒一二三区在线视频-麻豆精选传媒4区2021-在线视频99-在线视频a

千鋒教育-做有情懷、有良心、有品質(zhì)的職業(yè)教育機(jī)構(gòu)

手機(jī)站
千鋒教育

千鋒學(xué)習(xí)站 | 隨時(shí)隨地免費(fèi)學(xué)

千鋒教育

掃一掃進(jìn)入千鋒手機(jī)站

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

關(guān)注千鋒學(xué)習(xí)站小程序
隨時(shí)隨地免費(fèi)學(xué)習(xí)課程

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

GDI+Window詳解

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

一、GDI Windows

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

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


HWND hWnd;    //窗口句柄
HDC hdcMem;    //內(nèi)存設(shè)備上下文句柄 
Graphics * graphics;    //圖形對(duì)象指針
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對(duì)象
graphics = new Graphics(hdcMem);

//創(chuàng)建Image對(duì)象
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對(duì)象
    graphics = new Graphics(hdcMem);

    //創(chuàng)建Image對(duì)象
    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)機(jī)

在使用GDI+Window的時(shí)候,可能會(huì)遇到突然關(guān)機(jī)的情況,這時(shí)就需要防止突然關(guān)機(jī)引起的數(shù)據(jù)損壞。可以使用SetConsoleCtrlHandler函數(shù),注冊(cè)一個(gè)控制信號(hào)處理函數(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);

    //處理控制信號(hào)
    SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleCtrlHandler, TRUE);

    //創(chuàng)建窗口...
}

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

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


#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是怎么按出來(lái)的

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

五、GDI+Windowed

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

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

在使用GDI+Window時(shí),可以遇到突然關(guān)機(jī)的情況。為了防止突然關(guān)機(jī)引起的數(shù)據(jù)損壞,可以使用SetConsoleCtrlHandler函數(shù),注冊(cè)一個(gè)控制信號(hào)處理函數(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);

    //處理控制信號(hào)
    SetConsoleCtrlHandler((PHANDLER_ROUTINE)ConsoleCtrlHandler, TRUE);

    //創(chuàng)建窗口...
}

七、GDI Windows什么意思

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

八、GDI Window是什么意思

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

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

一、sort函數(shù)頭文件概述sort函數(shù)頭文件是C++STL中的一個(gè)頭文件,包含了一系列的排序函數(shù)。sort函數(shù)是對(duì)一個(gè)指定區(qū)間內(nèi)的元素進(jìn)行排序的函數(shù),通...詳情>>

2023-11-22 11:01:57
Grafana中文界面詳解

一、Grafana中文界面簡(jiǎn)介Grafana是一個(gè)可視化的開源數(shù)據(jù)分析和監(jiān)控工具,其圖形化界面可以幫助用戶更好地展現(xiàn)、分析數(shù)據(jù),并針對(duì)數(shù)據(jù)建立儀表盤...詳情>>

2023-11-22 10:40:21
Direct.h的全面介紹

一、direct.h路徑direct.h是Windows下一個(gè)C/C++語(yǔ)言頭文件,所以在使用前需要引入該頭文件。在Visual Studio中,點(diǎn)擊“項(xiàng)目”-“屬性”-“C/C++...詳情>>

2023-11-22 10:25:57
Bat腳本中文亂碼問(wèn)題詳解

一、含中文路徑引起的亂碼問(wèn)題1、問(wèn)題描述在編寫bat腳本時(shí),如果路徑中包含中文,那么在執(zhí)行bat腳本時(shí)就會(huì)出現(xiàn)亂碼問(wèn)題,導(dǎo)致腳本無(wú)法正常執(zhí)行...詳情>>

2023-11-22 10:15:09
BAT腳本隱藏運(yùn)行窗口詳解

一、BAT腳本的基本概念BAT腳本是Windows平臺(tái)下的批處理文件,通常以.bat為擴(kuò)展名。它是由DOS命令組合而成的,可以自動(dòng)運(yùn)行一系列的命令,是一種...詳情>>

2023-11-22 09:57:09
主站蜘蛛池模板: 欧美国产在线观看| 含羞草实验室入口免费网站直接| 国产对白受不了了中文对白| 精品国内自产拍在线视频| 夫妇交换性3中文字幕k8| 顶级欧美色妇xxxxx| а√最新版地址在线天堂| 免费做暖1000视频日本| 快点cao我要被cao烂了| 日韩午夜r电影在线观看| 久久99国产一区二区三区| 一个人看的www视频免费在线观看| 免费看的一级毛片| 伊在人亚洲香蕉精品区| 亚洲国产一区二区三区亚瑟| 久久久久久夜精品精品免费啦| 中文字幕一精品亚洲无线一区 | 国产无遮挡又黄又爽高清视| 欧美超清videos1080p| 强行被公侵犯奈奈美| 欧美色视频在线观看| 亚洲永久精品ww47| 欧美午夜成年片在线观看| 娇妻之欲海泛舟1一42| 日本久久久久亚洲中字幕| 亚洲欧美日韩国产精品一区| chinese打桩大学生twink| 在线观看中文字幕码| 欧美日韩成人在线观看| 又色又爽又黄的视频网站| 四虎影永久在线高清免费| 欧美无卡| 国产精品麻豆va在线播放| 国内一级黄色片| 岛国大片免费在线观看| 国产特级毛片aaaaaa高清| 麻豆影视视频高清在线观看| 国产91在线|欧美| 日韩福利社| 波多野结衣护士| 欧美黄色免费看|