共用方式為


在 WCS 1.0 中使用結構

WCS 1.0 所使用的大部分結構都非常簡單,而且只需要一些說明。 它們記載于 WCS 1.0 參考一節中,標題為 Structure

例外狀況是SetupColorMatchingW函式所使用的COLORMATCHSETUPW結構,以及 Wingdi.h 中定義的下列 Windows 結構:

下列主題會以更大的長度討論:

Windows 點陣圖標頭結構

WCS 1.0 可讓您連結或內嵌在與裝置無關的點陣圖中, (DIB) 。 這可讓 DIB 色彩比在 Windows 95 中使用 WCS 更精確地描述。 BITMAPV5HEADER 是新的點陣圖標頭結構,定義于 Windows 98 版本中的 Wingdi.h 中。 為了開發目的,它也會包含在 Icm.h 檔案中,其中包含此程式設計人員參考。 BITMAPV5HEADER結構如下所示:

typedef struct {
    DWORD        bV5Size;
    LONG         bV5Width;
    LONG         bV5Height;
    WORD         bV5Planes;
    WORD         bV5BitCount;
    DWORD        bV5Compression;
    DWORD        bV5SizeImage;
    LONG         bV5XPelsPerMeter;
    LONG         bV5YPelsPerMeter;
    DWORD        bV5ClrUsed;
    DWORD        bV5ClrImportant;
    DWORD        bV5RedMask;
    DWORD        bV5GreenMask;
    DWORD        bV5BlueMask;
    DWORD        bV5AlphaMask;
    DWORD        bV5CSType;
    CIEXYZTRIPLE bV5Endpoints;
    DWORD        bV5GammaRed;
    DWORD        bV5GammaGreen;
    DWORD        bV5GammaBlue;
    DWORD        bV5Intent;         // Rendering intent for bitmap 
    DWORD        bV5ProfileData;    // Offset to profile data 
    DWORD        bV5ProfileSize;    // Size of embedded profile data 
    DWORD        bV5Reserved;       // Should be zero 
} BITMAPV5HEADER, FAR *LPBITMAPV5HEADER, *PBITMAPV5HEADER;

成員 bV5CSType 可以有值PROFILE_EMBEDDED或PROFILE_LINKED,以指定設定檔是內嵌還是與 DIB 連結。 成員 bV5ProfileData 是從 BITMAPV5HEADER 結構的開頭到設定檔資料開頭的位元組位移。 如果設定檔是內嵌的,則設定檔資料是實際的設定檔,如果已連結,則設定檔資料會是設定檔的 Null 終止檔案名。 這不可以是 Unicode 字串。 它必須由 Windows 字元集的字元獨佔組成, (字碼頁 1252) 。

當 DIB 載入記憶體時,如果存在) 應該遵循色彩資料表,則設定檔資料 (, bV5ProfileData 應該從 BITMAPV5HEADER 結構的開頭提供設定檔資料的位移。 此成員的值現在會不同,因為點陣圖位不會遵循記憶體中的色彩資料表。 應用程式在將 DIB 載入記憶體之後,應該修改 bV5ProfileData 成員。

針對封裝的 DIB,設定檔資料應遵循類似檔案格式的點陣圖位。 bV5ProfileData成員仍應該從BITMAPV5HEADER結構的開頭提供設定檔資料的位移。

只有當 ( BITMAPV5HEADER == ) ANDbV5CSType PROFILE_EMBEDDED或PROFILE_LINKED時,應用程式才應該存取設定檔資料。

如果設定檔已連結,設定檔的路徑可以是任何完整名稱, (包括可使用 Win32 CreateFile 函式開啟的網路路徑) 。

V4 和 V5 標頭之間的差異

在使用新的點陣圖結構時,辨識 BITMAPV4HEADERBITMAPV5HEADER 結構設定方式的差異相當實用:

V4 標頭 意義
bV4CSType LCS_CALIBRATED_RGB。 這個值表示在適當的欄位中會提供端點和 Gamma。 假值會造成問題。
bV4CSType LCS_sRGB。 這個值表示點陣圖位於 sRGB 色彩空間中, (gammas 和端點忽略) 。
bV4CSType LCS_WINDOWS_COLOR_SPACE。 這個值表示點陣圖位於 Windows 預設色彩空間中。

 

V5 標頭 意義
bV5CSType LCS_CALIBRATED_RGB。 這個值表示在適當的欄位中會提供端點和 Gamma。 假值會造成問題。
bV5CSType LCS_sRGB。 這個值表示點陣圖位於 sRGB 色彩空間中, (gammas 和端點忽略) 。
bV5CSType PROFILE_EMBEDDED。 這個值表示 bV5ProfileData 指向記憶體緩衝區,其中包含要使用 (gamma 和端點的設定檔) 。
bV5CSType PROFILE_LINKED。 這個值表示 bV5ProfileData 指向設定檔的檔案名,以使用 (gamma 和端點) 。
bV5CSType LCS_WINDOWS_COLOR_SPACE。 這個值表示點陣圖位於 Windows 預設色彩空間中。

 

為了將較舊的點陣圖與新的 BITMAPV5HEADER 結構轉換,名為 Bitmap.exe 的命令列轉換公用程式檔案包含在 WCS 1.0 程式設計人員參考中。

BitMap.exe:用於轉換點陣圖標頭的Command-Line公用程式

Bitmap.exe是命令列公用程式,位於您指定的安裝資料夾下的 \Bin 資料夾中。 它會修改 Windows 點陣圖的標頭,讓您能夠將現有的點陣圖從 BITMAPINFOHEADERBITMAPV4HEADER 標頭結構轉換為較新的 BITMAPV5HEADER 結構,然後再重新轉換一次。 命令列語法如下所示:

BITMAP [/d] [/1|4|5] [/s] [/f] 
filename

命令列參數具有下列效果。

交換器 意義
/d 預設值會自動在轉換的標頭中輸入。
/1 將指定的點陣圖轉換為 BITMAPINFOHEADER
/4 將指定的點陣圖轉換為 BITMAPV4HEADER
/5 將指定的點陣圖轉換為 BITMAPV5HEADER
/f 強制轉換,即使點陣圖已經有正確的標頭也一樣
/s 轉換指定資料夾中的點陣圖及其下的所有子目錄