冶南
釬具為您提供windows接口打印的相關(guān)原理。
Windows接口打印是一種常見的打印方式,其打印過程就如在Word中打印文檔一樣。只要安裝了打印機(jī)和其Windows驅(qū)動(dòng)程序,就可以使用了,而且它不需要生成中間文件也不太需要軟件程序的過多干預(yù)。
(1)打印原理
簡(jiǎn)單地說,地圖數(shù)據(jù)的打印輸出過程就是在打印機(jī)設(shè)備環(huán)境上繪制地圖數(shù)據(jù)的過程。其中的關(guān)鍵是將地圖數(shù)據(jù)的范圍映射到打印機(jī)的設(shè)備范圍上。而打印機(jī)設(shè)備范圍是由兩個(gè)要素決定的:打印紙的有效大小和打印分辨率,打印紙的有效大小是指打印機(jī)能實(shí)際打印的范圍。因此,若紙張有效范圍為(xmin, ymin, xmax, ymax)inch,打印分辨率為Rdpi,當(dāng)前打印設(shè)備范圍為(Dxmin, Dymin, Dxmax, Dymax),則有:
Dxmin =xmin·R;Dymin=ymin·R;
Dxmax =xmax·R;Dymax=ymax·R;
有了打印設(shè)備范圍,根據(jù)地圖數(shù)據(jù)的范圍(Mxmin, Mymin,Mxmax, Mymax),就可以算出兩個(gè)空間范圍的橫、縱向比例系數(shù)Sx, Sy:
Sx=(Dxmax-Dxmin)/(Mxmax-Mxmin);
Sy=(Dymax-Dymin)/(Mymax-Mymin);
根據(jù)比例系數(shù),就可以進(jìn)行坐標(biāo)變化了對(duì)地圖數(shù)據(jù)中的任一點(diǎn)p(x, y),經(jīng)變換后有:
x′=(x-Mxmin)·Sx+Dxmin;
y′=(y-Mymin)·Sy+Dymin。
(2)打印流程
解決了數(shù)據(jù)的坐標(biāo)變換問題,則打印步驟如下:
1)通過CPrintDialog對(duì)象取得打印機(jī)的設(shè)備環(huán)境句柄。有了設(shè)備環(huán)境句柄就能得到打印機(jī)的相關(guān)參數(shù),如打印紙大小、有效打印范圍、打印分辨率等并啟動(dòng)打??;
2)根據(jù)打印機(jī)參數(shù)就能計(jì)算出坐標(biāo)變換的比例系數(shù)Sx和Sy;
3)取地圖數(shù)據(jù),根據(jù)比例系數(shù)Sx和Sy進(jìn)行坐標(biāo)變換、使用打印機(jī)設(shè)備環(huán)境句柄進(jìn)行圖形繪制即打印;
4)循環(huán)第三步,直到所有的地圖數(shù)據(jù)被打印,則程序結(jié)束。