CImage
提供增強的位圖支持,包括加載和保存采用 JPEG、GIF、BMP 和可移植網絡圖形格式的圖像 (PNG) 格式。
說明
無法在 Windows 運行時中執行的應用程序中使用此類及其成員。
class CImage
“屬性” | 說明 |
---|---|
CImage::CImage | 構造函數。 |
“屬性” | 說明 |
---|---|
CImage::AlphaBlend | 顯示具有透明或半透明像素的位圖。 |
CImage::Attach | 將 HBITMAP 附加到 CImage 對象。 可以與非 DIB 節位圖或 DIB 節位圖一起使用。 |
CImage::BitBlt | 將位圖從源設備上下文復制到此當前設備上下文。 |
CImage::Create | 創建 DIB 節位圖,并附加到以前構造的對象 CImage 。 |
CImage::CreateEx | 創建具有其他參數的 DIB (位圖) ,并附加到以前構造 CImage 的對象。 |
CImage::Destroy | 從 對象分離位 CImage 圖并銷毀位圖。 |
CImage::Detach | 從 對象分離位 CImage 圖。 |
CImage::Draw | 將位圖從源矩形復制到目標矩形。 Draw 拉伸或壓縮位圖以適應目標矩形的尺寸(如有必要)并處理 alpha 混合和透明顏色。 |
CImage::GetBits | 檢索指向位圖的實際像素值的指針。 |
CImage::GetBPP | 檢索每個像素的位數。 |
CImage::GetColorTable | 從顏色表中的一系列條目 (RGB) 紅色、綠色、藍色和 RGB 值。 |
CImage::GetDC | 檢索選擇當前位圖的設備上下文。 |
CImage::GetExporterFilterString | 查找可用的圖像格式及其說明。 |
CImage::GetHeight | 檢索當前圖像的高度(以像素為單位)。 |
CImage::GetImporterFilterString | 查找可用的圖像格式及其說明。 |
CImage::GetMaxColorTableEntries | 檢索顏色表中的最大條目數。 |
CImage::GetPitch | 檢索當前圖像的間距(以字節為單位)。 |
CImage::GetPixel | 檢索 由 和 指定的像素 x 的顏色 y 。 |
CImage::GetPixelAddress | 檢索給定像素的地址。 |
CImage::GetTransparentColor | 檢索透明顏色在顏色表中的位置。 |
CImage::GetWidth | 檢索當前圖像的寬度(以像素為單位)。 |
CImage::IsDIBSection | 確定附加的位圖是否為 DIB 部分。 |
CImage::IsIndexed | 指示位圖的顏色映射到索引調色板。 |
CImage::IsNull | 指示當前是否加載了源位圖。 |
CImage::IsTransparencySupported | 指示應用程序是否支持透明位圖。 |
CImage::Load | 從指定文件加載圖像。 |
CImage::LoadFromResource | 從指定的資源加載圖像。 |
CImage::MaskBlt | 使用指定的掩碼和光柵操作合并源位圖和目標位圖的顏色數據。 |
CImage::PlgBlt | 執行從源設備上下文中的矩形到目標設備上下文中的并行四邊形的位塊傳輸。 |
CImage::ReleaseDC | 釋放使用 檢索的設備上下文 CImage::GetDC 。 |
CImage::ReleaseGDIPlus | 釋放由資源GDI+。 必須調用 以釋放由全局對象創建 CImage 的資源。 |
CImage::Save | 將圖像保存為指定類型。 Save 無法指定圖像選項。 |
CImage::SetColorTable | 設置紅色、綠色、藍色 RGB) DIB 部分的顏色表中一系列條目的顏色值。 |
CImage::SetPixel | 將指定坐標中的像素設置為指定顏色。 |
CImage::SetPixelIndexed | 將位于指定坐標的像素設置到調色板的指定索引位置的顏色。 |
CImage::SetPixelRGB | 將指定坐標的像素設置為指定的紅色、綠色、藍色 (RGB) 值。 |
CImage::SetTransparentColor | 設置要視為透明的顏色的索引。 調色板中只能有一種顏色是透明的。 |
CImage::StretchBlt | 如有必要,將位圖從源矩形復制到目標矩形,拉伸或壓縮位圖以適應目標矩形的尺寸。 |
CImage::TransparentBlt | 將具有透明顏色的位圖從源設備上下文復制到當前設備上下文。 |
“屬性” | 說明 |
---|---|
CImage::operator HBITMAP | 返回Windows對象的對象句柄 CImage 。 |
CImage
采用與設備無關的位圖或 DIB (部分) 位圖;但是,只能對 CreateCImage::Load DIB 部分使用 或 。 可以使用 將非 DIB 節位圖附加到 對象,但不能使用以下僅支持 CImage
Attach DIB 節 CImage
位圖的方法:
若要確定附加位圖是否為 DIB 部分,請調用 IsDibSection 。
備注
在 Visual Studio .NET 2003 中,此類保留所創建對象 CImage
數的計數。 每當計數為 0 時,都會自動調用 函數,以釋放 GdiplusShutdown
GDI+。 這可確保始終正確銷毀由 DLL 直接或間接創建的任何對象,并且 CImageGdiplusShutdown
不會從 調用 DllMain
這些對象。
備注
不建議 CImage
在 DLL 中使用全局對象。 如果需要在 DLL 中使用全局對象,請調用 顯式釋放由 CImage
CImage::ReleaseGDIPlus GDI+。
CImage
無法選擇到新的 CDC 中。 CImage
為映像 HDC
創建其自己的 。 因為一次只能選擇一個 ,所以不能將與 關聯的 HBITMAPHDCHBITMAPCImage
選定到另一個 HDC
中。 如果需要 , CDC
請從 中 HDC
檢索 CImage
,并賦予 CDC::FromHandle 。
// Get a CDC for the imageCDC* pDC = CDC::FromHandle(m_myImage.GetDC());// Use pDC herepDC->Rectangle(0, 40, 100, 50);m_myImage.ReleaseDC();
在 CImage
MFC 項目中使用 時,請注意項目中的哪些成員函數需要指向 對象的 CBitmap 指針。 如果要與此類函數(如 )一起使用 , CImage
CMenu::AppendMenu 請使用 CBitmap::FromHandle ,將 傳遞給 CImageHBITMAP
它,并使用返回的 CBitmap*
。
void CMyDlg::OnRButtonDown(UINT nFlags, CPoint point){ UNREFERENCED_PARAMETER(nFlags); CBitmap* pBitmap = CBitmap::FromHandle(m_myImage); m_pmenuPop->AppendMenu(0, ID_BMPCOMMAND, pBitmap); ClientToScreen(&point); m_pmenuPop->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x, point.y, this);}
通過 CImage
,可以訪問 DIB 節的實際位。 可以在以前使用過 CImage
Win32 或 DIB 節的任何位置 HBITMAP
使用 對象。
可以從 CImage
MFC 或 ATL 使用 。
備注
使用 創建項目時 CImage
,必須先定義 CString
,然后才能包括 atlimage.h
。 如果項目使用不帶 MFC 的 ATL,請包括 atlstr.h
,然后再包括 atlimage.h
。 如果項目使用 MFC (或者它是具有 MFC 支持的 ATL 項目,) 之前 afxstr.h
包括 atlimage.h
。
同樣,在包含 之前 atlimage.h
必須包含 atlimpl.cpp
。 若要輕松完成此操作,請 (atlimage.hpch.hstdafx.h
2017 Visual Studio及更早版本中的) 。
頭:
CImage::AlphaBlend
顯示具有透明或半透明像素的位圖。
BOOL AlphaBlend( HDC hDestDC, int xDest, int yDest, BYTE bSrcAlpha = 0xff, BYTE bBlendOp = AC_SRC_OVER) const throw();BOOL AlphaBlend( HDC hDestDC, const POINT& pointDest, BYTE bSrcAlpha = 0xff, BYTE bBlendOp = AC_SRC_OVER) const throw();BOOL AlphaBlend( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, BYTE bSrcAlpha = 0xff, BYTE bBlendOp = AC_SRC_OVER);BOOL AlphaBlend( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc, BYTE bSrcAlpha = 0xff, BYTE bBlendOp = AC_SRC_OVER);
hDestDC
目標設備上下文的句柄。
xDest
目標矩形左上角的 x 坐標(以邏輯單位為單位)。
yDest
目標矩形左上角的 y 坐標(以邏輯單位為單位)。
bSrcAlpha
要用于整個源位圖的 alpha 透明度值。 默認0xff (255) 假定圖像不透明,并且只想使用每像素 alpha 值。
bBlendOp
源位圖和目標位圖的 alpha 混合函數、要應用于整個源位圖的全局 alpha 值,以及源位圖的格式信息。 源和目標混合函數當前限制為 AC_SRC_OVER
。
pointDest
對 結構 POINT 的引用,該結構以邏輯單元標識目標矩形的左上角。
nDestWidth
目標矩形的寬度(以邏輯單位為單位)。
nDestHeight
目標矩形的高度(以邏輯單位為單位)。
xSrc
源矩形左上角的邏輯 x 坐標。
ySrc
源矩形左上角的邏輯 y 坐標。
nSrcWidth
源矩形的寬度(以邏輯單位為單位)。
nSrcHeight
源矩形的高度(以邏輯單位為單位)。
rectDest
對 結構 RECT 的引用,標識目標。
rectSrc
對 結構 RECT
的引用,標識源。
如果成功,則不為 0;否則為 0。
Alpha 混合位圖支持按像素混合顏色。
當 設置為 的默認值時,源位圖將基于源像素的 alpha 值放置在目標 bBlendOp
AC_SRC_OVER
位圖上。
CImage::Attach
附加到 hBitmap
CImage
對象。
void Attach(HBITMAP hBitmap, DIBOrientation eOrientation = DIBOR_DEFAULT) throw();
hBitmap
的句柄 HBITMAP
。
eOrientation
指定位圖的方向。 可以是以下值之一:
DIBOR_DEFAULT
位圖的方向由操作系統確定。 DIBOR_BOTTOMUP
位圖的行順序相反。 這將導致 CImage::GetBits 在位圖緩沖區末尾附近返回指針, CImage::GetPitch 并返回負數。 DIBOR_TOPDOWN
位圖的行按從上到下的順序排序。 這將導致 CImage::GetBits 返回指向位圖緩沖區的第一個字節的指針, CImage::GetPitch 并返回正數。 位圖可以是非 DIB 節位圖或 DIB 節位圖。 有關只能與 DIB 節位圖一起使用的方法的列表 IsDIBSection ,請參閱 。
CImage::BitBlt
將位圖從源設備上下文復制到此當前設備上下文。
BOOL BitBlt( HDC hDestDC, int xDest, int yDest, DWORD dwROP = SRCCOPY) const throw();BOOL BitBlt( HDC hDestDC, const POINT& pointDest, DWORD dwROP = SRCCOPY) const throw();BOOL BitBlt( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, int xSrc, int ySrc, DWORD dwROP = SRCCOPY) const throw();BOOL BitBlt( HDC hDestDC, const RECT& rectDest, const POINT& pointSrc, DWORD dwROP = SRCCOPY) const throw();
hDestDC
目標 HDC
。
xDest
目標矩形左上角的邏輯 x 坐標。
yDest
目標矩形左上角的邏輯 y 坐標。
dwROP
要執行的星號操作。 Raster-operation 代碼準確定義了如何組合源、目標以及模式位, (所選畫筆定義) 形成目標。 有關其他Windows代碼及其說明的列表,請參閱 Windows SDK BitBlt 中的 。
pointDest
一 POINT 個 結構,指示目標矩形的左上角。
nDestWidth
目標矩形的寬度(以邏輯單位為單位)。
nDestHeight
目標矩形的高度(以邏輯單位為單位)。
xSrc
源矩形左上角的邏輯 x 坐標。
ySrc
源矩形左上角的邏輯 y 坐標。
rectDest
指示 RECT 目標矩形的 結構。
pointSrc
一 POINT
個 結構,指示源矩形的左上角。
如果成功,則不為零,否則為零。
有關詳細信息,請參閱 BitBlt Windows SDK。
CImage::CImage
構造 CImage
對象。
CImage() throw();
構造對象后,調用 CreateLoad 、、 或 以 LoadFromResourceAttach 將位圖附加到對象。
注意在Visual Studio中,此類保留所創建對象 數的計數。 每當計數為 0 時,都會自動調用 函數以釋放 GdiplusShutdown
由 GDI+。 這可確保始終正確銷毀由 DLL 直接或間接創建的任何對象,并且不會從 CImageGdiplusShutdown
DllMain 調用這些對象。
不建議 CImage
在 DLL 中使用全局對象。 如果需要在 DLL 中使用全局對象,請調用 顯式釋放由 CImage
CImage::ReleaseGDIPlus GDI+。
CImage::Create
創建位 CImage
圖并將其附加到以前構造的對象 CImage
。
BOOL Create( int nWidth, int nHeight, int nBPP, DWORD dwFlags = 0) throw();
nWidth
位圖 CImage
的寬度(以像素為單位)。
nHeight
位圖 CImage
的高度(以像素為單位)。 如果 nHeight
為正,則位圖為從下到上 DIB,其原點位于左下角。 如果 nHeight
為負數,則位圖為從上到下 DIB,其原點為左上角。
nBPP
位圖中每個像素的位數。 通常為 4、8、16、24 或 32。 對于 monochrome 位圖或掩碼,可以是 1。
dwFlags
指定位圖對象是否具有 alpha 通道。 可以是零個或多個以下值的組合:
createAlphaChannel
只有在 為 32 且 為 nBPP
時,才能 eCompression
使用 BI_RGB
。 如果指定,則創建的圖像具有每個像素的 alpha (透明度) 值,存儲在非 alpha 32 位圖像中未使用的每個像素 (的第 4 個字節) 。 調用 時,會自動使用此 alpha 通道 CImage::AlphaBlend 。備注
在對 CImage::Draw 的調用中,具有 alpha 通道的圖像會自動 alpha 混合到目標。
如果成功,則不為 0;否則為 0。
CImage::CreateEx
創建位 CImage
圖并將其附加到以前構造的對象 CImage
。
BOOL CreateEx( int nWidth, int nHeight, int nBPP, DWORD eCompression, const DWORD* pdwBitmasks = NULL, DWORD dwFlags = 0) throw();
nWidth
位圖 CImage
的寬度(以像素為單位)。
nHeight
位圖 CImage
的高度(以像素為單位)。 如果 nHeight
為正,則位圖為從下到上 DIB,其原點位于左下角。 如果 nHeight
為負數,則位圖為從上到下 DIB,其原點為左上角。
nBPP
位圖中每個像素的位數。 通常為 4、8、16、24 或 32。 對于 monochrome 位圖或掩碼,可以是 1。
eCompression
指定壓縮的自下向上位圖的壓縮類型 (不能壓縮自頂向下的 DIB) 。 可以是以下其中一個值:
BI_RGB
格式未壓縮。 調用 時指定此值 CImage::CreateEx
等效于調用 CImage::Create
。 BI_BITFIELDS
格式未壓縮,顏色表包含三個顏色掩碼,分別指定每個像素的紅色、綠色和 DWORD
藍色分量。 與 16 和 32-bpp 位圖一同使用時,這一點有效。 pdwBitfields
僅在 設置為 eCompression
時使用 BI_BITFIELDS
,否則它必須為 NULL
。 指向包含三個位掩碼的數組的指針,指定每個像素的哪些位分別用于顏色的紅色、綠色和藍色 DWORD
分量。 有關位域限制的信息,請參閱 Windows BITMAPINFOHEADER SDK。
dwFlags
指定位圖對象是否具有 alpha 通道。 可以是零個或多個以下值的組合:
createAlphaChannel
只有在 為 32 且 為 nBPP
時,才能 eCompression
使用 BI_RGB
。 如果指定,則創建的圖像具有每個像素的 alpha (透明度) 值,存儲在非 alpha 32 位圖像中未使用的每個像素 (的第 4 個字節) 。 調用 時,會自動使用此 alpha 通道 CImage::AlphaBlend 。 備注 在對 CImage::Draw 的調用中,具有 alpha 通道的圖像會自動 alpha 混合到目標。 TRUE
如果成功。 否則為 FALSE
。
以下示例創建一個 100×100 像素位圖,使用 16 位對每個像素進行編碼。 在給定的 16 位像素中,位 0-3 對紅色分量進行編碼,4-7 位編碼為綠色,位 8-11 編碼為藍色。 剩余的 4 位未使用。
DWORD adwBitmasks[3] = { 0x0000000f, 0x000000f0, 0x00000f00 };m_myImage.CreateEx(100, 100, 16, BI_BITFIELDS, adwBitmasks, 0);
CImage::Destroy
從 對象分離位 CImage
圖并銷毀位圖。
void Destroy() throw();
CImage::Detach
從 對象分離位 CImage
圖。
HBITMAP Detach() throw();
已分離位圖的句柄;如果未附加 NULL
位圖,則為 。
CImage::Draw
將位圖從源設備上下文復制到當前設備上下文。
BOOL Draw( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight) const throw();BOOL Draw( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc) const throw();BOOL Draw( HDC hDestDC, int xDest, int yDest) const throw();BOOL Draw( HDC hDestDC, const POINT& pointDest) const throw();BOOL Draw( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight) const throw();BOOL Draw( HDC hDestDC, const RECT& rectDest) const throw();
hDestDC
目標設備上下文的句柄。
xDest
目標矩形左上角的 x 坐標(以邏輯單位為單位)。
yDest
目標矩形左上角的 y 坐標(以邏輯單位為單位)。
nDestWidth
目標矩形的寬度(以邏輯單位為單位)。
nDestHeight
目標矩形的高度(以邏輯單位為單位)。
xSrc
源矩形左上角的 x 坐標(以邏輯單位為單位)。
ySrc
源矩形左上角的 y 坐標(以邏輯單位為單位)。
nSrcWidth
源矩形的寬度(以邏輯單位為單位)。
nSrcHeight
源矩形的高度(以邏輯單位為單位)。
rectDest
對 結構 RECT 的引用,標識目標。
rectSrc
對 結構 RECT
的引用,標識源。
pointDest
對 結構 POINT 的引用,該結構以邏輯單元標識目標矩形的左上角。
如果成功,則不為 0;否則為 0。
Draw
執行與 相同的操作 StretchBlt ,除非圖像包含透明色或 alpha 通道。 在這種情況下, Draw
將執行與 或 所需的 TransparentBltAlphaBlend 相同操作。
對于未指定 Draw
源矩形的 的版本,整個源映像是默認值。 對于未指定目標矩形大小的 版本,源圖像的大小為默認值,不會發生拉伸或 Draw
收縮。
CImage::GetBits
檢索指向位圖中給定像素的實際位值的指針。
void* GetBits() throw();
指向位圖緩沖區的指針。 如果位圖是從下向上的 DIB,則指針指向靠近緩沖區末尾的位置。 如果位圖是自上而下的 DIB,則指針指向緩沖區的第一個字節。
使用此指針以及 返回的值 GetPitch ,可以查找和更改圖像中的單個像素。
備注
此方法僅支持 DIB 節位圖;因此,訪問對象的像素的方式與訪問 DIB 節的像素 CImage
的方式相同。 返回的指針指向 0,0 (位置的像素) 。
CImage::GetBPP
檢索每像素位數值。
int GetBPP() const throw();
每個像素的位數。
此值確定定義每個像素的位數和位圖中的最大顏色數。
每個像素的位數通常為 1、4、8、16、24 或 32。 有關 biBitCount
此值 BITMAPINFOHEADER Windows請參閱 Windows SDK 中的 成員。
CImage::GetColorTable
從 DIB 部分調色板中的 (中檢索) RGB 的紅色、綠色、藍色和 RGB 值。
void GetColorTable( UINT iFirstColor, UINT nColors, RGBQUAD* prgbColors) const throw();
iFirstColor
要檢索的第一個條目的顏色表索引。
nColors
要檢索的顏色表條目數。
prgbColors
指向用于檢索顏色 RGBQUAD 表條目的結構數組的指針。
CImage::GetDC
檢索當前已選擇圖像的設備上下文。
HDC GetDC() const throw();
設備上下文的句柄。
每次調用 GetDC
時,都必須對 進行后續調用 ReleaseDC 。
CImage::GetExporterFilterString
查找可用于保存圖像的圖像格式。
static HRESULT GetExporterFilterString( CSimpleString& strExporters, CSimpleArray<GUID>& aguidFileTypes, LPCTSTR pszAllFilesDescription = NULL, DWORD dwExclude = excludeDefaultSave, TCHAR chSeparator = _T('|'));
strExporters
對 CSimpleString
對象的引用。 有關詳細信息,請參閱備注。
aguidFileTypes
GUID 的數組,其中每個元素對應于字符串中的一種文件類型。 在下面的示例 pszAllFilesDescription
中, 為 ,其余數組值是當前操作系統 aguidFileTypes[0]
GUID_NULL
支持的映像文件格式。
備注
有關常量的完整列表,請參閱Windows SDK 中的圖像文件格式常量。
pszAllFilesDescription
如果此參數不是 NULL
,則篩選器字符串將在列表的開頭有一個附加篩選器。 此篩選器說明的當前值為 ,并接受列表中任何其他導出程序支持的任何 pszAllFilesDescription
擴展名的文件。
例如:
//First filter in the list will be titled "All Image Files", and//will accept files with any extension supported by any exporter.CImage::GetExporterFilterString( strExporters, aguidFileTypes,_T("All Image Files"));
dwExclude
一組位標志,指定要從列表中排除的文件類型。 允許的標志包括:
excludeGIF
= 0x01排除 GIF 文件。 excludeBMP
= 0x02排除 BMP (Windows位圖) 文件。 excludeEMF
= 0x04 EMF (增強型圖元) 文件。 excludeWMF
= 0x08排除 WMF (Windows元) 文件。 excludeJPEG
= 0x10排除 JPEG 文件。 excludePNG
= 0x20排除 PNG 文件。 excludeTIFF
= 0x40排除 TIFF 文件。 excludeIcon
= 0x80排除 ICO (Windows 圖標) 文件。 excludeOther
= 0x80000000 排除上面未列出的任何其他文件類型。 excludeDefaultLoad
= 0 對于加載,默認情況下包含所有文件類型 excludeDefaultSave
= excludeIcon | excludeEMF | excludeWMF
保存時,默認情況下會排除這些文件,因為它們通常具有特殊的要求。 chSeparator
圖像格式之間使用的分隔符。 有關詳細信息,請參閱備注。
標準 HRESULT
。
可以將生成的格式字符串傳遞給 MFC 對象,以在”文件另存為”對話框中公開可用圖像 CFileDialog 格式的文件擴展名。
參數 strExporter
的格式為:
文件 description0|*.ext0|filedescription1|*.ext1|…文件說明 n|*.ext n
其中”|”是由 指定的分隔符 chSeparator
。 例如:
"Bitmap format|*.bmp|JPEG format|*.jpg|GIF format|*.gif|PNG format|*.png||"
如果向 MFC 對象|,請使用默認分隔符 CFileDialog
“|”。 如果將此字符串傳遞到常見的”文件保存”對話框,請使用 null 分隔符”″。
CImage::GetHeight
檢索圖像的高度(以像素為單位)。
int GetHeight() const throw();
圖像的高度(以像素為單位)。
CImage::GetImporterFilterString
查找可用于加載圖像的圖像格式。
static HRESULT GetImporterFilterString( CSimpleString& strImporters, CSimpleArray<GUID>& aguidFileTypes, LPCTSTR pszAllFilesDescription = NULL, DWORD dwExclude = excludeDefaultLoad, TCHAR chSeparator = _T('|'));
strImporters
對 CSimpleString
對象的引用。 有關詳細信息,請參閱備注。
aguidFileTypes
Guid 的數組,其中每個元素對應于字符串中的一種文件類型。 在下面的示例中 pszAllFilesDescription
,* aguidFileTypes[0]*
為, GUID_NULL
其余數組值為當前操作系統支持的圖像文件格式。
備注
有關常量的完整列表,請參閱 Windows SDK 中的圖像文件格式常數。
pszAllFilesDescription
如果此參數不為 NULL
,則篩選器字符串將在列表的開頭添加一個附加篩選器。 此篩選器的說明將具有的當前值 pszAllFilesDescription
,并接受列表中任何其他導出程序支持的任何擴展名的文件。
例如:
//First filter in the list will be titled "All Image Files", and//will accept files with any extension supported by any importer.CImage::GetImporterFilterString( strImporters, aguidFileTypes,_T("All Image Files"));
dwExclude
用于指定要從列表中排除的文件類型的一組位標志。 允許的標志包括:
excludeGIF
= 0x01 不包括 GIF 文件。 excludeBMP
= 0x02 Windows 位圖) 文件中不包括 BMP (。 excludeEMF
= 0x04 不包括 EMF (增強型圖元文件) 文件。 excludeWMF
= 0x08 Windows 圖元文件) 文件中排除 WMF (。 excludeJPEG
= 0x10 排除 JPEG 文件。 excludePNG
= 0x20 排除 PNG 文件。 excludeTIFF
= 0x40 不包括 TIFF 文件。 excludeIcon
= 0x80 Windows 圖標) 文件中不包括 .ico (。 excludeOther
= 0x80000000 排除上面未列出的任何其他文件類型。 excludeDefaultLoad
= 0 對于負載,默認情況下包括所有文件類型 excludeDefaultSave
= excludeIcon | excludeEMF | excludeWMF
對于保存,默認情況下會排除這些文件,因為這些文件通常具有特殊要求。 chSeparator
圖像格式之間使用的分隔符。 有關詳細信息,請參閱備注。
可以將生成的格式字符串傳遞到 MFC CFileDialog 對象,以在 ” CFileDialog ” 對話框中公開可用圖像格式的文件擴展名。
參數 strImporter
的格式為:
file description0 | ext0 | filedescription1 | ext1 | .。。文件說明 n| * ext n
其中,”|” 是指定的分隔符 chSeparator
。 例如:
"Bitmap format|*.bmp|JPEG format|*.jpg|GIF format|*.gif|PNG format|*.png||"
如果將此字符串傳遞到 MFC 對象,請使用默認分隔符 “|” CFileDialog
。 如果將此字符串傳遞到公共 文件打開 對話框,請使用空分隔符 “ 0″。
CImage::GetMaxColorTableEntries
檢索顏色表中的最大項數。
int GetMaxColorTableEntries() const throw();
顏色表中的條目數。
此方法僅支持 DIB 節位圖。
CImage::GetPitch
檢索圖像的間距。
int GetPitch() const throw();
圖像的間距。 如果返回值為負,則位圖為下邊距 DIB,其原點為左下角。 如果返回值為正,則位圖為自頂向下的 DIB,其原點為左上角。
螺距是兩個內存地址之間的距離(以字節為單位),表示一個位圖行的開頭和下一個位圖行的開頭。 由于螺距以字節為單位進行測量,因此圖像的間距有助于確定像素格式。 螺距還可以包括為位圖預留的額外內存。
使用 GetPitch
with GetBits 查找圖像的各個像素。
備注
此方法僅支持 DIB 節位圖。
CImage::GetPixel
檢索 x 和 y指定的位置處的像素顏色。
COLORREF GetPixel(int x, int y) const throw();
x
像素的 x 坐標。
y
像素的 y 坐標。
像素的紅色、綠色、藍色 (RGB) 值。 如果像素在當前剪輯區域外,則返回值為 CLR_INVALID
。
CImage::GetPixelAddress
檢索像素的確切地址。
void* GetPixelAddress(int x, int y) throw();
x
像素的 x 坐標。
y
像素的 y 坐標。
根據像素的坐標、位圖的間距和每個像素的位數確定地址。
對于每個像素小于8位的格式,此方法返回包含像素的字節的地址。 例如,如果圖像格式具有每個像素4位的,則 GetPixelAddress
返回字節中第一個像素的地址,并且必須計算每個字節2個像素。
備注
此方法僅支持 DIB 節位圖。
CImage::GetTransparentColor
檢索調色板中透明顏色的索引位置。
LONG GetTransparentColor() const throw();
透明顏色的索引。
CImage::GetWidth
檢索圖像的寬度(以像素為單位)。
int GetWidth() const throw();
位圖的寬度(以像素為單位)。
CImage::IsDIBSection
確定附加位圖是否為 DIB 部分。
bool IsDIBSection() const throw();
TRUE
如果附加位圖是 DIB 節,則為。 否則為 FALSE
。
如果位圖不是 DIB 部分,則不能使用以下 CImage
僅支持 DIB 節位圖的方法:
CImage::IsIndexed
確定位圖的像素是否映射到調色板。
bool IsIndexed() const throw();
TRUE
如果已編制索引,否則為 FALSE
。
TRUE
僅當位圖為8位 (256 顏色) 或更低時,此方法才會返回。
備注
此方法僅支持 DIB 節位圖。
CImage::IsNull
確定當前是否已加載位圖。
bool IsNull() const throw();
TRUE
如果當前未加載位圖,此方法將返回; 否則返回 FALSE
。
CImage::IsTransparencySupported
指示應用程序是否支持透明位圖。
static BOOL IsTransparencySupported() throw();
如果當前平臺支持透明度,則為非零值。 否則為0。
如果返回值不為零,并且支持透明度,則對 AlphaBlend 、或的調用 TransparentBltDraw 將處理透明顏色。
CImage::Load
加載圖像。
HRESULT Load(LPCTSTR pszFileName) throw();HRESULT Load(IStream* pStream) throw();
pszFileName
指向字符串的指針,該字符串包含要加載的圖像文件的名稱。
pStream
指向流的指針,其中包含要加載的圖像文件的名稱。
標準 HRESULT
。
加載或指定的圖像 pszFileNamepStream
。
有效圖像類型為 BMP、GIF、JPEG、PNG 和 TIFF。
CImage::LoadFromResource
從資源加載 BITMAP
圖像。
void LoadFromResource( HINSTANCE hInstance, LPCTSTR pszResourceName) throw();void LoadFromResource( HINSTANCE hInstance, UINT nIDResource) throw();
hInstance
包含要加載的映像的模塊實例的句柄。
pszResourceName
指向包含要加載的圖像的資源名稱的字符串的指針。
nIDResource
要加載的資源的 ID。
資源的類型必須為 BITMAP
。
CImage::MaskBlt
使用指定的掩碼和光柵操作合并源位圖和目標位圖的顏色數據。
BOOL MaskBlt( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, int xSrc, int ySrc, HBITMAP hbmMask, int xMask, int yMask, DWORD dwROP = SRCCOPY) const throw();BOOL MaskBlt( HDC hDestDC, const RECT& rectDest, const POINT& pointSrc, HBITMAP hbmMask, const POINT& pointMask, DWORD dwROP = SRCCOPY) const throw();BOOL MaskBlt( HDC hDestDC, int xDest, int yDest, HBITMAP hbmMask, DWORD dwROP = SRCCOPY) const throw();BOOL MaskBlt( HDC hDestDC, const POINT& pointDest, HBITMAP hbmMask, DWORD dwROP = SRCCOPY) const throw();
hDestDC
其可執行文件包含資源的模塊的句柄。
xDest
目標矩形左上角的 x 坐標(以邏輯單位為單位)。
yDest
目標矩形左上角的 y 坐標(以邏輯單位為單位)。
nDestWidth
目標矩形和源位圖的寬度(以邏輯單位為單位)。
nDestHeight
目標矩形和源位圖的高度(以邏輯單位為單位)。
xSrc
源位圖左上角的邏輯 x 坐標。
ySrc
源位圖左上角的邏輯 y 坐標。
hbmMask
與源設備上下文中的顏色位圖組合在一起的單色掩碼位圖的句柄。
xMask
參數指定的掩碼位圖的水平像素 hbmMask
偏移量。
yMask
參數指定的掩碼位圖的垂直像素 hbmMask
偏移量。
dwROP
指定前景色和背景三元色柵運算代碼,該方法用于控制源數據和目標數據的組合。 背景色柵操作代碼存儲在此值的高序字的高序字節中;前臺 raster 操作代碼存儲在此值的高序字的低序字節中;將忽略此值的低序字,并且應為零。 有關此方法上下文中的前景和背景的討論,請參閱 Windows MaskBlt
SDK。 有關常見 raster 操作代碼的列表,請參閱 BitBlt
Windows SDK。
rectDest
對 結構 RECT
的引用,標識目標。
pointSrc
一 POINT
個 結構,指示源矩形的左上角。
pointMask
一 POINT
個 結構,指示掩碼位圖的左上角。
pointDest
對 結構 POINT
的引用,該結構以邏輯單元標識目標矩形的左上角。
如果成功,則不為零;否則為 0。
此方法僅適用于 Windows NT 4.0 及更高版本。
CImage::operator HBITMAP
使用此運算符獲取對象的Windows GDI 句柄 CImage
的附加對象。 此運算符是強制轉換運算符,支持直接使用 HBITMAP
對象。
CImage::PlgBlt
執行從源設備上下文中的矩形到目標設備上下文中的并行四邊形的位塊傳輸。
復制
BOOL PlgBlt( HDC hDestDC, const POINT* pPoints, HBITMAP hbmMask = NULL) const throw();BOOL PlgBlt( HDC hDestDC, const POINT* pPoints, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, HBITMAP hbmMask = NULL, int xMask = 0, int yMask = 0) const throw();BOOL PlgBlt( HDC hDestDC, const POINT* pPoints, const RECT& rectSrc, HBITMAP hbmMask = NULL, const POINT& pointMask = CPoint(0, 0)) const throw();
hDestDC
目標設備上下文的句柄。
pPoints
指向邏輯空間中三個點的數組的指針,該數組標識目標并行四邊形的三個角。 源矩形的左上角映射到此數組的第一個點,右上角映射到此數組的第二個點,左下角映射到第三個點。 源矩形的右下角映射到并行四邊形中的隱式第四個點。
hbmMask
用于屏蔽源矩形顏色的可選 monochrome 位圖的句柄。
xSrc
源矩形左上角的 x 坐標(以邏輯單位為單位)。
ySrc
源矩形左上角的 y 坐標(以邏輯單位為單位)。
nSrcWidth
源矩形的寬度(以邏輯單位為單位)。
nSrcHeight
源矩形的高度(以邏輯單位為單位)。
xMask
monochrome 位圖左上角的 x 坐標。
yMask
monochrome 位圖左上角的 y 坐標。
rectSrc
對結構 RECT 的引用,該結構指定源矩形的坐標。
pointMask
一 POINT 個 結構,指示掩碼位圖的左上角。
如果成功,則不為零;否則為 0。
如果 hbmMask
標識有效的單色位圖,則使用此位圖來屏蔽源 PlgBit
矩形中顏色數據的位。
此方法僅適用于 Windows NT 4.0 及更高版本。 有關詳細信息 PlgBlt ,請參閱 Windows SDK 中的 。
CImage::ReleaseDC
釋放設備上下文。
void ReleaseDC() const throw();
由于一次只能在設備上下文中選擇一個位圖,因此每次調用 ReleaseDC
時都必須調用 GetDC 。
CImage::ReleaseGDIPlus
釋放由資源GDI+。
void ReleaseGDIPlus() throw();
必須調用此方法以釋放由全局對象分配 CImage
的資源。 請參閱 CImage::CImage。
CImage::Save
將映像保存到磁盤上的指定流或文件中。
HRESULT Save( IStream* pStream, REFGUID guidFileType) const throw();HRESULT Save( LPCTSTR pszFileName, REFGUID guidFileType = GUID_NULL) const throw();
pStream
指向包含文件圖像數據的 COM IStream 對象的指針。
pszFileName
指向圖像文件名的指針。
guidFileType
將圖像另存為的文件類型。 可以是以下值之一:
ImageFormatBMP
未壓縮的位圖圖像。 ImageFormatPNG
可移植網絡圖形 (PNG) 壓縮圖像。 ImageFormatJPEG
JPEG 壓縮圖像。 ImageFormatGIF
GIF 壓縮圖像。 備注
有關常量的完整列表,請參閱Windows SDK 中的圖像文件格式常量。
標準 HRESULT
。
調用此函數以使用指定的名稱和類型保存映像。 如果未 guidFileType
包含 參數,則文件名的文件擴展名將用于確定圖像格式。 如果未提供擴展,則映像將保存為 BMP 格式。
CImage::SetColorTable
為 DIB 部分調色板中的 (設置) RGB 的紅色、綠色、藍色和 RGB 顏色值。
void SetColorTable( UINT iFirstColor, UINT nColors, const RGBQUAD* prgbColors) throw();
iFirstColor
要設置的第一個條目的顏色表索引。
nColors
要設置的顏色表項數。
prgbColors
指向結構數組 RGBQUAD 的指針,用于設置顏色表條目。
此方法僅支持 DIB 節位圖。
CImage::SetPixel
設置位圖中給定位置的像素的顏色。
void SetPixel(int x, int y, COLORREF color) throw();
x
要設置的像素的水平位置。
y
要設置的像素的垂直位置。
color
設置像素的顏色。
如果像素坐標位于所選剪輯區域之外,此方法將失敗。
CImage::SetPixelIndexed
將像素顏色設置為調色板 iIndex
中位于 的顏色。
void SetPixelIndexed(int x, int y, int iIndex) throw();
x
要設置的像素的水平位置。
y
要設置的像素的垂直位置。
iIndex
調色板中顏色的索引。
CImage::SetPixelRGB
將 和 指定位置的像素設置為 、 和 指示的顏色(在圖像中為紅色、綠色、藍色 (xyrgb
RGB) 顏色。
void SetPixelRGB( int x, int y, BYTE r, BYTE g, BYTE b) throw();
x
要設置的像素的水平位置。
y
要設置的像素的垂直位置。
r
紅色的強度。
g
綠色的強度。
b
藍色的強度。
紅色、綠色和藍色參數由介于 0 和 255 之間的數字表示。 如果將所有三個參數都設置為零,則生成的合并顏色為黑色。 如果將所有三個參數都設置為 255,則生成的組合顏色為白色。
CImage::SetTransparentColor
將給定索引位置處的顏色設置為透明。
LONG SetTransparentColor(LONG iTransparentColor) throw();
iTransparentColor
要設置為透明的顏色的調色板中的索引。 如果為 -1,則不將顏色設置為透明。
以前設置為透明的顏色的索引。
CImage::StretchBlt
將位圖從源設備上下文復制到此當前設備上下文。
BOOL StretchBlt( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, DWORD dwROP = SRCCOPY) const throw();BOOL StretchBlt( HDC hDestDC, const RECT& rectDest, DWORD dwROP = SRCCOPY) const throw();BOOL StretchBlt( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, DWORD dwROP = SRCCOPY) const throw();BOOL StretchBlt( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc, DWORD dwROP = SRCCOPY) const throw();
hDestDC
目標設備上下文的句柄。
xDest
目標矩形左上角的 x 坐標(以邏輯單位為單位)。
yDest
目標矩形左上角的 y 坐標(以邏輯單位為單位)。
nDestWidth
目標矩形的寬度(以邏輯單位為單位)。
nDestHeight
目標矩形的高度(以邏輯單位為單位)。
dwROP
要執行的星號操作。 Raster-operation 代碼準確定義了如何組合源、目標以及當前所選畫筆 (定義的模式) 形成目標。 有關其他Windows代碼及其說明的列表,請參閱 Windows SDK BitBlt 中的 。
rectDest
對 結構 RECT 的引用,標識目標。
xSrc
源矩形左上角的 x 坐標(以邏輯單位為單位)。
ySrc
源矩形左上角的 y 坐標(以邏輯單位為單位)。
nSrcWidth
源矩形的寬度(以邏輯單位為單位)。
nSrcHeight
源矩形的高度(以邏輯單位為單位)。
rectSrc
對 結構 RECT
的引用,標識源。
如果成功,則不為零;否則為 0。
有關詳細信息,請參閱 StretchBlt Windows SDK。
CImage::TransparentBlt
將位圖從源設備上下文復制到此當前設備上下文。
BOOL TransparentBlt( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, UINT crTransparent = CLR_INVALID) const throw();BOOL TransparentBlt( HDC hDestDC, const RECT& rectDest, UINT crTransparent = CLR_INVALID) const throw();BOOL TransparentBlt( HDC hDestDC, int xDest, int yDest, int nDestWidth, int nDestHeight, int xSrc, int ySrc, int nSrcWidth, int nSrcHeight, UINT crTransparent = CLR_INVALID) const throw();BOOL TransparentBlt( HDC hDestDC, const RECT& rectDest, const RECT& rectSrc, UINT crTransparent = CLR_INVALID) const throw();
hDestDC
目標設備上下文的句柄。
xDest
目標矩形左上角的 x 坐標(以邏輯單位為單位)。
yDest
目標矩形左上角的 y 坐標(以邏輯單位為單位)。
nDestWidth
目標矩形的寬度(以邏輯單位為單位)。
nDestHeight
目標矩形的高度(以邏輯單位為單位)。
crTransparent
要視為透明的源位圖中的顏色。 默認情況下,指示當前設置為圖像的透明顏色 CLR_INVALID
的顏色應該使用。
rectDest
對 結構 RECT 的引用,標識目標。
xSrc
源矩形左上角的 x 坐標(以邏輯單位為單位)。
ySrc
源矩形左上角的 y 坐標(以邏輯單位為單位)。
nSrcWidth
源矩形的寬度(以邏輯單位為單位)。
nSrcHeight
源矩形的高度(以邏輯單位為單位)。
rectSrc
對 結構 RECT
的引用,標識源。
TRUE
如果成功,為 ;否則為 FALSE
。
TransparentBlt
每個像素 4 位和 8 位的源位圖支持 。 使用 CImage::AlphaBlend 指定透明每像素 32 位位圖。
// Performs a transparent blit from the source image to the destination// image using the images' current transparency settingsBOOL TransparentBlt(CImage* pSrcImage, CImage* pDstImage, int xDest, int yDest, int nDestWidth, int nDestHeight){ HDC hDstDC = NULL; BOOL bResult; if(pSrcImage == NULL || pDstImage == NULL) { // Invalid parameter return FALSE; } // Obtain a DC to the destination image hDstDC = pDstImage->GetDC(); // Perform the blit bResult = pSrcImage->TransparentBlt(hDstDC, xDest, yDest, nDestWidth, nDestHeight); // Release the destination DC pDstImage->ReleaseDC(); return bResult;}
147410.html
本文由 貴州做網站公司 整理發布,部分圖文來源于互聯網,如有侵權,請聯系我們刪除,謝謝!
網絡推廣與網站優化公司(網絡優化與推廣專家)作為數字營銷領域的核心服務提供方,其價值在于通過技術手段與策略規劃幫助企業提升線上曝光度、用戶轉化率及品牌影響力。這...
在當今數字化時代,公司網站已成為企業展示形象、傳遞信息和開展業務的重要平臺。然而,對于許多公司來說,網站建設的價格是一個關鍵考量因素。本文將圍繞“公司網站建設價...
在當今的數字化時代,企業網站已成為企業展示形象、吸引客戶和開展業務的重要平臺。然而,對于許多中小企業來說,高昂的網站建設費用可能會成為其發展的瓶頸。幸運的是,隨...
psp如龍有沒有漢化的?possp上的兩個模特像龍。比如龍1新篇章和龍2阿修羅篇章,這兩個游戲之前都是有人填的,然后一直沒有消息,應該是沒有消息,就像多多的軌跡也是有人挖的,但是這個游戲目前還是沒有中文版,可以去攻略游戲對抗攻略。畢竟,在過去的PS1和PS2時代,很少有游戲。更不用說FC時代了。如龍有幾個版本?如龍系列抵得上七部以一馬Kiryu為主角的如龍作品。即如龍1.2.3.4.5.0.6?!?..
巫妖王棱彩插槽能用什么寶石?你可以使用這三種寶石:1.致命深海琥珀、精致女王蛋白石、迅捷阿祖內特黃玉、萬能蒼穹四種強化屬性寶石,具有增加強化屬性(暴擊、熟練度、迅捷、全能)150點的效果。2.擁有高級強化屬性的寶石,包括致命先知之眼,玲瓏暗影紫玉,迅捷晨光石,具有提升強化屬性(暴擊,熟練度,迅捷)250點的效果。3,豹眼石,增加主屬性(敏捷,智力,力量)200點。PS:全身只能插一顆寶石。夢幻西游...
是白雪的冰柜好還是阪神的冰柜好?當然是白雪公主。它首先使用德國技術和壓縮機。全部采用純銅管,其展示柜全部采用風冷無霜技術。這是冰柜行業最優質的技術。該公司旗下還有兩個品牌,雪蜻蜓版神。它的生產基地在江蘇,阪神是白雪公主的品牌和白雪公主的公司做的,但是價格相對便宜,所以不夠切料。0-@qq.com阪神是明星買的,頂開式冰柜700多升如雪。阪神的價格在3800左右。阪神冰柜價格是多少?冰柜大多用于商場...