五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

vs/C++資源視圖中的jpg圖片格式如何加載進(jìn)GDI中 (CREATEDC IMAGE類(lèi) GDI使用)

2023-06-02 20:50 作者:-最后的雨-  | 我要投稿

如果你將資源類(lèi)型設(shè)置為 "IMAGE",并且將圖片的資源 ID 設(shè)置為 "IMAGE01",以下是相應(yīng)的代碼修改示例:



HRSRC hResource = FindResource(NULL, MAKEINTRESOURCE(IDR_IMAGE01), L"IMAGE");

  • FindResource 函數(shù)用于查找指定資源的句柄。

  • NULL 表示在當(dāng)前可執(zhí)行文件中搜索資源。

  • MAKEINTRESOURCE(IDR_IMAGE01) 將資源 ID 轉(zhuǎn)換為字符串類(lèi)型,用于指定要查找的資源。

  • "IMAGE" 是資源類(lèi)型,與你在資源視圖中設(shè)置的類(lèi)型相匹配。

  • hResource 是找到的資源的句柄。


HGLOBAL hGlobal = LoadResource(NULL, hResource);

  • LoadResource 函數(shù)用于加載指定資源的內(nèi)容。

  • NULL 表示在當(dāng)前可執(zhí)行文件中加載資源。

  • hResource 是資源的句柄。

  • hGlobal 是加載的資源的全局內(nèi)存句柄。

LPVOID pResourceData = LockResource(hGlobal);

  • LockResource 函數(shù)用于鎖定資源的全局內(nèi)存句柄,并返回資源數(shù)據(jù)的指針。

  • hGlobal 是資源的全局內(nèi)存句柄。

  • pResourceData 是指向資源數(shù)據(jù)的指針。

DWORD imageSize = SizeofResource(NULL, hResource);

  • SizeofResource 函數(shù)用于獲取資源的大?。ㄒ宰止?jié)為單位)。

  • NULL 表示在當(dāng)前可執(zhí)行文件中計(jì)算資源大小。

  • hResource 是資源的句柄。

  • imageSize 是資源的大小。


HGLOBAL hMemory = GlobalAlloc(GMEM_MOVEABLE, imageSize);

LPVOID pMemoryData = GlobalLock(hMemory);

CopyMemory(pMemoryData, pResourceData, imageSize);

  • GlobalAlloc 函數(shù)用于分配全局內(nèi)存塊。

  • GMEM_MOVEABLE 標(biāo)志表示分配的內(nèi)存塊可移動(dòng)。

  • hMemory 是分配的全局內(nèi)存句柄。

  • GlobalLock 函數(shù)用于鎖定全局內(nèi)存句柄,并返回內(nèi)存塊的指針。

  • pMemoryData 是指向鎖定的內(nèi)存塊的指針。

  • CopyMemory 函數(shù)用于將資源數(shù)據(jù)從 pResourceData 復(fù)制到 pMemoryData 中,以便后續(xù)使用。

IStream* pStream = NULL;

CreateStreamOnHGlobal(hMemory, TRUE, &pStream);

  • CreateStreamOnHGlobal 函數(shù)用于創(chuàng)建基于內(nèi)存塊的流。

  • hMemory 是全局內(nèi)存句柄。

  • TRUE 表示釋放內(nèi)存時(shí)同時(shí)釋放內(nèi)存塊。

  • pStream 是創(chuàng)建的流對(duì)象的指針。

Image* pImage = Image::FromStream(pStream);

  • Image::FromStream 是 GDI+ 圖像類(lèi)的靜態(tài)成員函數(shù),用于從流中加載圖像。

  • pStream 是包含圖像數(shù)據(jù)的流對(duì)象。

  • pImage 是加載的圖像

GlobalUnlock(hMemory);

pStream->Release();

流對(duì)象是一種抽象概念,它表示數(shù)據(jù)的序列或數(shù)據(jù)流。在編程中,流對(duì)象用于以一種統(tǒng)一的方式處理輸入和輸出。

流對(duì)象可以與各種數(shù)據(jù)源和目標(biāo)進(jìn)行交互,例如文件、內(nèi)存、網(wǎng)絡(luò)連接等。它們提供了一組通用的方法和操作,使得讀取和寫(xiě)入數(shù)據(jù)變得簡(jiǎn)單和一致。

流對(duì)象通常用于以下操作:

  • 從數(shù)據(jù)源讀取數(shù)據(jù),如讀取文件內(nèi)容或從網(wǎng)絡(luò)連接接收數(shù)據(jù)。

  • 將數(shù)據(jù)寫(xiě)入目標(biāo),如將數(shù)據(jù)寫(xiě)入文件或?qū)?shù)據(jù)發(fā)送到網(wǎng)絡(luò)連接。

  • 進(jìn)行數(shù)據(jù)操作和轉(zhuǎn)換,如復(fù)制、壓縮、加密等。

在代碼示例中,通過(guò)使用 CreateStreamOnHGlobal 函數(shù),創(chuàng)建了一個(gè)基于內(nèi)存塊的流對(duì)象 (IStream* pStream)。這個(gè)流對(duì)象可以用于加載圖像數(shù)據(jù),并提供了一組方法來(lái)訪問(wèn)和操作圖像數(shù)據(jù)。

使用流對(duì)象的好處是,它提供了一種抽象層,使得無(wú)論數(shù)據(jù)源是文件、內(nèi)存還是其他類(lèi)型的資源,我們都可以使用相同的方式讀取和處理數(shù)據(jù)。這種統(tǒng)一的接口簡(jiǎn)化了數(shù)據(jù)處理的操作,并提供了更高的靈活性和可移植性。

CreateStreamOnHGlobal(hMemory, TRUE, &pStream) 的作用是將內(nèi)存中的圖像數(shù)據(jù)存儲(chǔ)到流對(duì)象中。

CreateStreamOnHGlobal 函數(shù)用于創(chuàng)建一個(gè)基于內(nèi)存塊的流對(duì)象,并將內(nèi)存塊中的數(shù)據(jù)與該流對(duì)象關(guān)聯(lián)起來(lái)。參數(shù) hMemory 是全局內(nèi)存塊的句柄,它包含了圖像數(shù)據(jù)。參數(shù) TRUE 表示在釋放流對(duì)象時(shí)同時(shí)釋放內(nèi)存塊。

通過(guò)調(diào)用 CreateStreamOnHGlobal 函數(shù)并傳遞內(nèi)存塊的句柄,以及用于存儲(chǔ)流對(duì)象地址的指針 &pStream,函數(shù)將創(chuàng)建一個(gè)與內(nèi)存塊關(guān)聯(lián)的流對(duì)象,并將該流對(duì)象的地址存儲(chǔ)在 pStream 指向的位置。

這樣一來(lái),我們就可以通過(guò) pStream 這個(gè)流對(duì)象來(lái)訪問(wèn)和操作內(nèi)存中的圖像數(shù)據(jù),比如加載圖像、讀取圖像信息等。




如果你已經(jīng)成功地將圖片資源加載到內(nèi)存中,并創(chuàng)建了一個(gè) Image 對(duì)象(例如 pImage),接下來(lái)你可以在 GDI 中使用該圖片進(jìn)行繪制。下面是一個(gè)簡(jiǎn)單的示例,展示如何在 GDI 中使用圖片對(duì)象進(jìn)行繪制:



HDC hdc; // 設(shè)備上下文句柄


// 在窗口的繪圖過(guò)程中使用 hdc


// 獲取圖片的寬度和高度

int imageWidth = pImage->GetWidth();

int imageHeight = pImage->GetHeight();


// 創(chuàng)建兼容的內(nèi)存設(shè)備上下文

HDC memDC = CreateCompatibleDC(hdc);


// 創(chuàng)建位圖句柄

HBITMAP hBitmap = NULL;

BITMAPINFO bmi = { 0 };

bmi.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);

bmi.bmiHeader.biWidth = imageWidth;

bmi.bmiHeader.biHeight = -imageHeight; // 負(fù)值表示頂部向下的位圖

bmi.bmiHeader.biPlanes = 1;

bmi.bmiHeader.biBitCount = 32; // 假設(shè)圖片為32位顏色

bmi.bmiHeader.biCompression = BI_RGB;

bmi.bmiHeader.biSizeImage = 0;


BYTE* pBits = NULL;

hBitmap = CreateDIBSection(memDC, &bmi, DIB_RGB_COLORS, (void**)&pBits, NULL, 0);


if (hBitmap)

{

? ? // 將位圖選入內(nèi)存設(shè)備上下文

? ? HBITMAP oldBitmap = (HBITMAP)SelectObject(memDC, hBitmap);


? ? // 繪制圖片到位圖

? ? Graphics graphics(memDC);

? ? graphics.DrawImage(pImage, 0, 0, imageWidth, imageHeight);


? ? // 在窗口上繪制位圖

? ? BitBlt(hdc, 0, 0, imageWidth, imageHeight, memDC, 0, 0, SRCCOPY);


? ? // 恢復(fù)內(nèi)存設(shè)備上下文的原始位圖

? ? SelectObject(memDC, oldBitmap);

}


// 釋放位圖資源

if (hBitmap)

? ? DeleteObject(hBitmap);


// 釋放內(nèi)存設(shè)備上下文

DeleteDC(memDC);

在上述示例中,首先獲取了圖片的寬度和高度,然后創(chuàng)建了一個(gè)兼容的內(nèi)存設(shè)備上下文 memDC。接著,創(chuàng)建了一個(gè)位圖句柄 hBitmap,用于繪制圖片。使用 GDI+ 的 Graphics 對(duì)象將圖片繪制到位圖中。最后,使用 BitBlt 函數(shù)將位圖從內(nèi)存設(shè)備上下文繪制到窗口的設(shè)備上下文 hdc 中。

這只是一個(gè)簡(jiǎn)單的示例,實(shí)際使用中可能需要根據(jù)具體的需求和繪圖操作進(jìn)行相應(yīng)的調(diào)整


vs/C++資源視圖中的jpg圖片格式如何加載進(jìn)GDI中 (CREATEDC IMAGE類(lèi) GDI使用)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
平乡县| 南阳市| 德昌县| 文登市| 麻江县| 普定县| 海门市| 扎赉特旗| 唐海县| 沁源县| 连山| 永登县| 竹溪县| 柯坪县| 通州区| 通山县| 迁西县| 泸西县| 昭觉县| 岑溪市| 梧州市| 江城| 东光县| 新干县| 昌图县| 伊通| 呼图壁县| 泰顺县| 广东省| 克拉玛依市| 湘乡市| 白河县| 南丹县| 景德镇市| 丹凤县| 无棣县| 海阳市| 郑州市| 临湘市| 铁力市| 于都县|