StretchBlt模式

使用StretchBlt會碰到一些與點陣圖大小縮放相關的一些根本問題。在擴展一個點陣圖時,StretchBlt必須複製圖素行或列。如果放大倍數不是原圖的整數倍,那么此操作會造成產生的圖像有些失真。
如果目的矩形比來源矩形小,那么StretchBlt在縮小圖像時就必須把兩行(或列)或者多行(或列)的圖素合併到一行(或列)。完成此操作有四種方法,它根據裝置內容伸展模式屬性來選擇其中一種方法。您可使用SetStretchBltMode函式來修改這個屬性。
SetStretchBltMode (hdc, iMode) ;
iMode可取下列值:
BLACKONWHITE或者STRETCH_ANDSCANS(內定) 如果兩個或多個圖素得合併成一個圖素,那么StretchBlt會對圖素執行一個邏輯AND運算。這樣的結果是只有全部的原始圖素是白色時該圖素才為白色,其實際意義是黑色圖素控制了白色圖素。這適用於白背景中主要是黑色的單色點陣圖。
WHITEONBLACK或STRETCH_ORSCANS 如果兩個或多個圖素得合併成一個圖素,那么StretchBlt執行邏輯OR運算。這樣的結果是只有全部的原始圖素都是黑色時才是黑色,也就是說由白色圖素決定顏色。這適用於黑色背景中主要是白色的單色點陣圖。
COLORONCOLOR或STRETCH_DELETESCANS StretchBlt簡單地消除圖素行或列,而沒有任何邏輯組合。這是通常是處理彩色點陣圖的最佳方法。
HALFTONE或STRETCH_HALFTONE Windows根據組合起來的來源顏色來計算目的的平均顏色。這將與半調調色盤聯合使用,第十六章將展示這一程式。
Windows還包括用於取得目前伸展模式的GetStretchBltMode函式。

相關詞條

熱門詞條

聯絡我們