共用方式為


GDIINFO 結構 (winddi.h)

GDIINFO 結構描述指定裝置的圖形功能。

語法

typedef struct _GDIINFO {
  ULONG     ulVersion;
  ULONG     ulTechnology;
  ULONG     ulHorzSize;
  ULONG     ulVertSize;
  ULONG     ulHorzRes;
  ULONG     ulVertRes;
  ULONG     cBitsPixel;
  ULONG     cPlanes;
  ULONG     ulNumColors;
  ULONG     flRaster;
  ULONG     ulLogPixelsX;
  ULONG     ulLogPixelsY;
  ULONG     flTextCaps;
  ULONG     ulDACRed;
  ULONG     ulDACGreen;
  ULONG     ulDACBlue;
  ULONG     ulAspectX;
  ULONG     ulAspectY;
  ULONG     ulAspectXY;
  LONG      xStyleStep;
  LONG      yStyleStep;
  LONG      denStyleStep;
  POINTL    ptlPhysOffset;
  SIZEL     szlPhysSize;
  ULONG     ulNumPalReg;
  COLORINFO ciDevice;
  ULONG     ulDevicePelsDPI;
  ULONG     ulPrimaryOrder;
  ULONG     ulHTPatternSize;
  ULONG     ulHTOutputFormat;
  ULONG     flHTFlags;
  ULONG     ulVRefresh;
  ULONG     ulBltAlignment;
  ULONG     ulPanningHorzRes;
  ULONG     ulPanningVertRes;
  ULONG     xPanningAlignment;
  ULONG     yPanningAlignment;
  ULONG     cxHTPat;
  ULONG     cyHTPat;
  LPBYTE    pHTPatA;
  LPBYTE    pHTPatB;
  LPBYTE    pHTPatC;
  ULONG     flShadeBlend;
  ULONG     ulPhysicalPixelCharacteristics;
  ULONG     ulPhysicalPixelGamma;
} GDIINFO, *PGDIINFO;

成員

ulVersion

指定驅動程式版本號碼。 ulVersion 的位元組順序格式如下。

顯示指定驅動程式版本號碼之 ulVersion 成員的圖

高階 16 位必須設定為零。 位 8 到 15 指定驅動程式所設計 Microsoft 作業系統的版本號碼。 此範圍的高階 4 位會指定版本的主要數目,低序 4 位包含版本的次要數目。 ulVersion 的低序 8 位指定顯示驅動程式的版本號碼;每個版本的顯示驅動程式二進位檔都應該遞增此值。

控制台 中的顯示程式會指出 ulVersion 中包含的版本號碼,以及其他驅動程式特定的資訊。

ulTechnology

指定裝置技術。 此成員可以是下表所列的其中一個值。

意義
DT_CHARSTREAM 僅限裝置字型
DT_PLOTTER 向量繪圖器
DT_RASCAMERA 點陣相機
DT_RASDISPLAY 點陣顯示
DT_RASPRINTER 點陣印表機

ulHorzSize

指定實體表面的寬度。 正值表示寬度以公厘為單位,而負值表示寬度是以公分為單位。

ulVertSize

指定實體表面的高度。 正值表示高度以公厘為單位,而負值表示高度以公分為單位。

ulHorzRes

以像素為單位指定實體表面 (顯示裝置) 的寬度,或 (印表機) 的可列印表面。

另請參閱 ulDesktopHorzRes

ulVertRes

指定實體表面 (顯示裝置) 的高度,或 (印表機) 的可列印表面高度。

cBitsPixel

指定每個色彩平面中的相鄰位數目。 每個像素的位總數是 cBitsPixelcPlanes 的乘積。

cPlanes

指定色彩平面的數目。

ulNumColors

針對 Palettized 裝置, ulNumColors 會指定預設調色盤中的項目數。 對於未包含印表機) 的非固定裝置 (,ulNumColors 會設定為 -1。

flRaster

保留且必須保留為零。

ulLogPixelsX

以每英吋邏輯圖元指定裝置的寬度解析度。

對於印表機,此成員應設定為 dpi 的印表機解析度。

針對顯示,此成員必須設定為96。

ulLogPixelsY

以每英吋邏輯圖元指定裝置的高度解析度。

對於印表機,此成員應設定為 dpi 的印表機解析度。

針對顯示,此成員必須設定為96。

flTextCaps

指定描述 Windows 3.1 文字功能的旗標。 如果驅動程式TC_SCROLLBLT旗標在此成員中,它表示主控台應該使用驅動程式提供的 DrvTextOut 函式,而不是 DrvBitBltDrvCopyBits 函式,執行文字捲動。 如果螢幕對螢幕位區塊傳送速率緩慢,驅動程式應該設定此旗標。 如果未設定此旗標,驅動程式會隱含要求主控台執行文字捲動 DrvBitBlt/DrvCopyBits

ulDACRed

ulDACGreen

ulDACBlue

指定指定色彩之 DAC 位的顯示編號。

ulAspectX

指定裝置圖元的相對寬度,範圍介於一到 1000 的範圍內。

ulAspectY

指定裝置圖元的相對高度,範圍介於一到 1000 的範圍內。

ulAspectXY

指定 ulAspectXulAspectY 平方總和的平方根。

xStyleStep

指定 x 主線 dx 樣式進階的微調子。 如需詳細資訊,請參閱下列一節和「樣式裝飾線」

yStyleStep

指定 Y 主要線條 動態的樣式進階微調子。 如需詳細資訊,請參閱下列一節和「樣式裝飾線」

denStyleStep

指定樣式進階的分母 D。如需詳細資訊,請參閱下列一節和「樣式裝飾線」

ptlPhysOffset

指定 POINTL 結構,其中包含表面不可寫入邊界的大小,以像素為單位。

szlPhysSize

指定 SIZEL 結構,其中包含整個表面的大小,以像素為單位,包括不可寫入的邊界。 SIZEL 結構與 SIZE 結構相同。

ulNumPalReg

指定索引裝置的調色盤緩存器數目。

ciDevice

這是 一種 COLORINFO 結構,定義 CIE 座標空間中的裝置色彩。

ulDevicePelsDPI

針對印表機,指定圖元 (或點數,如果圖元是並排配置圖元而不重疊或間隔,則指定每英吋的) 數。 例如,如果圖元的大小是0.001英吋,這個值會等於0.001除以0.001。 如果成員為零,GDI 半角會根據假設所有像素都連接且沒有重疊的假設來計算此數位。

由於大部分印表機的實體點大小大於測量的點大小,所以 GDI 會根據儲存格大小 (圖樣大小) ,使用此值來近似可放置的實體點數目。 接著會執行記錄回歸來判斷最線性的內容;也就是說,應該放置點以獲得最佳涵蓋範圍,以優化重疊裝置圖元涵蓋範圍, (點取得) 。

針對顯示,此成員應設定為零。

ulPrimaryOrder

針對半色調輸出指定裝置主要色彩或平面編號的位順序。 此成員可以是下表所列的其中一個值。

旗標 意義
PRIMARY_ORDER_ABC 裝置輸出順序為 RGB 或 CMY。 紅色或青色位於最小有效位中;藍色或黃色位於最重要的位。
PRIMARY_ORDER_ACB 裝置輸出順序為 RBG 或 CYM。 紅色或青色位於最小有效位中;綠色或magenta位於最重要的位。
PRIMARY_ORDER_BAC 裝置輸出順序為 GRB 或 MCY。 綠色或 magenta 在最小顯著位中;藍色或黃色位於最重要的位。
PRIMARY_ORDER_BCA 裝置輸出順序為 GBR 或 MYC。 綠色或 magenta 在最小顯著位中;紅色或青色位於最重要的位。
PRIMARY_ORDER_CBA 裝置輸出順序為 BGR 或 YMC。 藍色或黃色位於最小有效位中;紅色或青色位於最重要的位。
PRIMARY_ORDER_CAB 裝置輸出順序為 BRG 或 YCM。 藍色或黃色位於最小有效位中;綠色或magenta位於最重要的位。

ulHTPatternSize

指定半色調圖樣的大小。 以 AXB M 結尾的值AxB 模式的變化。換句話說,SIZEAx B 和 SIZE_AxB_M在 A xB 模式中以哪些圖元來亮起。 這個成員可以是下列其中一個值:

HT_PATSIZE_2x2
HT_PATSIZE_2x2_M
HT_PATSIZE_4x4
HT_PATSIZE_4x4_M
HT_PATSIZE_6x6
HT_PATSIZE_6x6_M
HT_PATSIZE_8x8
HT_PATSIZE_8x8_M
HT_PATSIZE_10x10
HT_PATSIZE_10x10_M
HT_PATSIZE_12x12
HT_PATSIZE_12x12_M
HT_PATSIZE_14x14
HT_PATSIZE_14x14_M
HT_PATSIZE_16x16
HT_PATSIZE_16x16_M
HT_PATSIZE_SUPERCELL
HT_PATSIZE_SUPERCELL_M
HT_PATSIZE_USER
HT_PATSIZE_MAX_INDEX
HT_PATSIZE_DEFAULT

ulHTOutputFormat

指定半色調的慣用輸出格式。 HT_FORMAT_4BPP只會使用 8 個完整濃度色彩,而HT_FORMATP_IRGB使用所有 16 種色彩,包括半濃度色彩。 假設每個色彩的 5 x 5 x 5 格式 (5 位) 用於HT_FORMAT_16BPP。 這個成員可以是下列其中一個值:

HT_FORMAT_1BPP
HT_FORMAT_4BPP
HT_FORMAT_4BPP_IRGB
HT_FORMAT_8BPP
HT_FORMAT_16BPP
HT_FORMAT_24BPP
HT_FORMAT_32BPP

flHTFlags

指定描述裝置的旗標組合。 需要這些旗標才能進行半分。 這個成員可以是下列值的組合:

旗標 意義
HT_FLAG_8BPP_CMY332_MASK 旗標,用來清除 flHTFlags (位 24 到 31) 上八個位的旗標。 然後 ,您可以使用MAKE_CMY332_MASK 宏,以每圖元 CMY 模式的 8 位筆跡層級資訊來設定這些位。 如需詳細資訊,請參閱 使用 GDI 8 位每圖元 CMY 遮罩模式
HT_FLAG_ADDITIVE_PRIMS 裝置主要是加法。
HT_FLAG_DO_DEVCLR_XFORM 要求 GDI 執行泛型色彩校正。
HT_FLAG_HAS_BLACK_DYE 裝置有個別的黑色油。
HT_FLAG_HIGH_INK_ABSORPTION
HT_FLAG_HIGHER_INK_ABSORPTION
HT_FLAG_HIGHEST_INK_ABSORPTION
裝置中的紙張會吸收超過一般筆墨量,因此 GDI 應該將較少的筆跡轉譯成紙張。 這些旗標表示筆跡吸收的相對數量,HT_FLAG_HIGHER_INK_ABSORPTION表示比HT_FLAG_HIGH_INK_ABSORPTION更多的吸收,但小於HT_FLAG_HIGHEST_INK_ABSORPTION。
HT_FLAG_INK_ABSORPTION_IDX0
HT_FLAG_INK_ABSORPTION_IDX1
HT_FLAG_INK_ABSORPTION_IDX2
HT_FLAG_INK_ABSORPTION_IDX3
用來定義 HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTION 和 HT_FLAG_LOW/LOWER/LOWEST_INK_ABSORPTION 的旗標。
HT_FLAG_INK_HIGH_ABSORPTION 用來定義 HT_FLAG_HIGH/HIGHER/HIGHEST_INK_ABSORPTION 的旗標。
HT_FLAG_INVERT_8BPP_BITMASK_IDX GDI 半色調應該使用CMY_INVERTED模式調色盤轉譯每圖元的 8 位詢問模式表面點陣圖。 如需 CMY_INVERTED模式調色盤描述和需求,請參閱 使用 GDI 8 位每圖元 CMY 遮罩模式
HT_FLAG_LOW_INK_ABSORPTION
HT_FLAG_LOWER_INK_ABSORPTION
HT_FLAG_LOWEST_INK_ABSORPTION
裝置中的紙張會吸收小於一般筆墨量,因此 GDI 應該將更多的筆跡轉譯成紙張。 這些旗標表示筆跡吸收的相對數量,HT_FLAG_LOWER_INK_ABSORPTION表示小於HT_FLAG_LOW_INK_ABSORPTION,但超過HT_FLAG_LOWEST_INK_ABSORPTION。
HT_FLAG_NORMAL_INK_ABSORPTION 裝置中的紙張會吸收一般筆墨量。
HT_FLAG_OUTPUT_CMY 裝置使用 CMY 主要專案,而不是 RGB 主要。 此旗標值僅適用於 1 bpp 和 4 bpp 目的地介面。
HT_FLAG_PRINT_DRAFT_MODE 停用 GDI 的反鋸齒程序代碼。
HT_FLAG_SQUARE_DEVICE_PEL 裝置圖元是正方形的,而不是四捨五入 (只顯示 -- 印表機需要四捨五入的圖元) 。
HT_FLAG_USE_8BPP_BITMASK 裝置使用單色列印。

ulVRefresh

目前顯示模式的視訊重新整理速率。 這是迷你埠驅動程序針對目前模式的重新整理速率所傳回的值。

控制台 中的顯示程式會顯示ulVRefresh成員中包含的重新整理速率。

ulBltAlignment

此成員表示位區塊傳輸至裝置的慣用 x 對齊方式。 值為零表示位區塊傳輸已加速;任何其他非負數表示位區塊傳輸並未加速,並提供慣用的水準對齊方式做為圖元倍數。

系統會使用這個值來判斷視窗位置的預設對齊方式,也可用來在安裝期間設定初始完整拖曳預設值。 值為零表示預設應該開啟完整拖曳;零以外的任何值表示預設應該關閉完整拖曳。

ulPanningHorzRes

ulPanningVertRes

驅動程序應該忽略,並維持零初始化狀態。

xPanningAlignment

yPanningAlignment

驅動程序應該忽略,並維持零初始化狀態。

cxHTPat

cyHTPat

分別指定使用者提供的半色調圖樣寬度和高度,以像素為單位。 cxHTPat 的值必須位於範圍HT_USERPAT_CX_MIN,以包含HT_USERPAT_CX_MAX。 cyHTPat 的值必須位於HT_USERPAT_CY_MIN範圍中,才能包含HT_USERPAT_CY_MAX。 這些常數定義於 winddi.h中。 如需詳細資訊,請參閱下列一節。

pHTPatA

pHTPatB

pHTPatC

ulPrimaryOrder 成員中的PRIMARY_ORDER_XXX值所定義,分別指向主要色彩 A、B 和 C 的使用者定義半色調模式。 每個 dyHTPat 必須是大小 cxHTPat 的有效二維位元組陣列。 如需詳細資訊,請參閱下列一節。

flShadeBlend

指定一組旗標,指出裝置的底紋和混合功能。 顯示驅動程序應該忽略這個成員,而且應該將它設定為零。 對於印表機驅動程式,驅動程式在此成員中放置的值是當應用程式呼叫 GetDeviceCaps (hdc、SHADEBLENDCAPS) 時所報告的值。 GetDeviceCaps 函式會在 Microsoft Window SDK 文件中說明。

ulPhysicalPixelCharacteristics

指定色彩片段設定為在顯示裝置上形成圖元的方式。 顯示裝置上的色彩片段可以依 RGB 順序排列,或以 BGR 順序排列,完全與 畫面緩衝區中的 RGB 順序無關。 色彩片段可以在水準等量中設定,其中一個數據列中的所有片段都是相同的色彩。 或者,可以在垂直等量中設定色彩片段,其中一個數據行中的所有片段都是相同的色彩。 建議使用垂直等量分割,因為它實際上會為每個圖元提供一個數據列中的三個不同的片段,藉此提供更高的水準子圖元解析度。

ulPhysicalPixelCharacteristics 成員必須設定為下表所示的其中一個值:

意義
PPC_DEFAULT 顯示裝置實體圖元資訊未知。
PPC_BGR_ORDER_HORIZONTAL_STRIPES 顯示裝置上的實體色彩片段會依藍色、綠色和紅色片段的數據列從上到下排列。
PPC_BGR_ORDER_VERTICAL_STRIPES 顯示裝置上的實體色彩片段會以藍色、綠色和紅色片段的數據行從左至右排列。
PPC_RGB_ORDER_HORIZONTAL_STRIPES 顯示裝置上的實體色彩片段會以紅色、綠色和藍色片段的數據列從上到下排列。
PPC_RGB_ORDER_VERTICAL_STRIPES 顯示裝置上的實體色彩片段會以紅色、綠色和藍色片段的數據行從左至右排列。
PPC_UNDEFINED 顯示裝置實體像素資訊是已知的,但不能以其中一個指定的列舉表示。 列舉目前適用於以 SAML 為基礎的監視器。 當符合下列任一條件時,驅動程式應該將 ulPhysicalPixelCharacteristics 設定為 PPC_UNDEFINED。 (這份清單不完整,但涵蓋最常見的條件。)
  • 此驅動程式知道監視器不是一部 LED 裝置。
  • 此裝置是一個 LED 裝置,但畫面緩衝區的解析度與需要縮放的實體顯示器原生解析度不同。 也就是說,因為畫面緩衝區圖元與裝置圖元之間不再有一對一的對應,所以需要縮放比例。

ulPhysicalPixelGamma

指定顯示裝置的 Gamma。 這個成員應該設定為實體圖元的 gamma、縮放比例為 1000 或下列其中一個值。 例如,gamma 值 2.2 會以 2200 表示。

意義
PPG_DEFAULT 驅動程式對裝置沒有 Gamma 的知識。
PPG_SRGB 裝置會使用 sRGB gamma。

備註

GDI 會在呼叫驅動程式提供的 DrvEnablePDEV 函式之前,先初始化這個結構。

xStyleStepyStyleStepdenStyleStep 成員會定義外觀線條樣式在繪製外觀線條的每個圖元時,應該如何前進。 每個像素樣式的進階數量會定義為一個分數,取決於線條是 x 樣式還是 y 樣式。 如果線條為 x 樣式,則樣式會依 x 方向移動之每個圖元的小數 量 dx/D 前進。 否則,每個像素的樣式會以 Y 方向移動 ,以 dy/D 前進。

預先定義線條樣式中的點PS_DOT每一個單位長。 如果驅動程式將 xStyleStep 定義為一, 並將 denStyleStep 定義為 5,則虛線水平線包含 5 像素 on,後面接著 5 像素關閉,重複重複。

這三個數位的每一個都必須小於 65536,即使 caps 成員是 LONG 值也一樣。 驅動程式會定義這些樣式步驟,以確保線條中的點和破折號是輸出裝置上的美觀大小。 水平和垂直步驟可能不同,以針對非三維外觀比例進行更正。 例如,在 EGA 顯示器上,其像素高於寬度的 33%,您可以設定:

pdevcaps->xStyleStep   =  3;    // For an EGA
pdevcaps->yStyleStep   =  4;
pdevcaps->denStyleStep = 12;

在此情況下,水平虛線是 4 像素開啟、4 像素關閉,因為每個像素的樣式會往前移 3/12 或 1/4。 垂直虛線是 3 像素開啟/3 像素關閉。

如果 x 和 y 樣式步驟平均分割成樣式分母,則樣式線條看起來會比較好,如同在上述範例中所做的一樣。 這會提供一律相同長度的虛線和點。

GDI 需要這項資訊,使其點陣圖函式可以模擬裝置在其本身介面上執行的確切功能。 應用程式可以存取這項資訊,以確切判斷要針對樣式線條開啟的圖元。 另請參閱 樣式外觀線條

半色調相關成員 cxHTPatcyHTPatpHTPatA、pHTPatBpHTPatC 可用於 OEM Unidrv 轉譯外掛程式,以定義由一或三種色彩組成的自定義半色調模式。 只有在 ulHTPatternSize 成員設定為HT_PATSIZE_USER時,才會檢查這些成員。 在此情況下,OEM 可以使用這些成員,根據儲存在資源檔或 OEM 自定義模組所產生的數據來定義自定義半色調模式。 cxHTPatcyHTPat 成員會定義三維半色調模式陣列的每個大小。 pHTPatA、pHTPatBpHTPatC 成員會指向每個色彩的個別圖樣陣列。 如果只使用一個模式陣列, 則 pHTPatApHTPatB pHTPatC 指向該陣列。

半色調模式中特定位置的每個位元組臨界值,都會決定對應輸出平面位置上的圖元是否開啟或關閉。 模式陣列中特定位置的零臨界值表示會忽略對應的圖元位置, (為黑色) 。 從 1 到 255 的臨界值會提供 255 層灰色的兩個模式;如果輸出平面中的圖元值大於或等於該位置的閾值,則會開啟圖元。 小於其對應閾值的圖元值會導致其像素在輸出平面中關閉。 如需詳細資訊,請參閱自定義 Microsoft 印表機驅動程式中的自定義半角

規格需求

需求
標頭 winddi.h (包含Winddi.h)

另請參閱

CIECHROMA

COLORINFO

DrvBitBlt

DrvCopyBits

DrvEnablePDEV

DrvTextOut