最終目的:
我要實作windows
這種縮列圖列印。主要實作代碼:
CPrintDialog printDlg(FALSE);
……
CDC dc;
dc.Attach(printDlg.CreatePrinterDC());
……
dc.StartDoc(&di);
dc.StartPage();
……
//創建一個graphics物件用于等下將圖片繪制到并列印
Graphics graphics(dc.m_hDC);
//加載一張要列印的圖片(需要將這張圖片列印35張小圖,到列印機A4紙上)
Gdiplus::Bitmap bitmapTemp(strFilePath);
//回圈列印五行
for(int nRowIndex = 0; nRowIndex < 5; nRowIndex++)
{
//回圈列印7列
for(int nColIndex = 0; nColIndex < 7; nColIndex ++)
{
//此處將圖片繪制到列印機,并列印出來
//問題:這個x,y,dx,dy該怎么計算,從而適配這個A4紙(最好是不限制是A4紙,我能通過設定的紙張大小,去計算)
graphics.DrawImage(&bitmapTemp, x,y,dx,dy);
}
}
嘗試:
1. 我看了MSDN上這個graphics關于DrawImage的介紹,但是,并沒有體現出這個單位該怎么設定。
2. 看到有人說與解析度有關,如果貼入的圖片解析度和畫布的解析度不一致時,拼出來的圖片并不是期待的結果。但是,水平實在太差,看不懂他要表達的意思。
3. 然后看到過說需要根據圖片解析度和列印機解析度進行換算的思路。
//獲取圖片寬度
int nImgWidth = bitmapTemp.GetWidth();
//獲取圖片水平解析度
int nImgDpi= bitmapTemp.GetHorizontalResolution();
//獲取列印機水平解析度
int nPrinterDpi = dc.GetDeviceCaps(LOGPIXELSX);
//然后通過“(取圖片寬度/圖片水平解析度) * 列印機水平解析度 " 得到會繪制的圖片的寬度
//但是,我看到這后,也不知道該怎么去計算那里的dx,dy等引數。
因為基礎的不扎實,所以看不懂,只好求助大家了。謝謝!
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/59513.html
標籤:界面
上一篇:directshow vs2010 編譯出現 LNK2001
下一篇:關于學習智能指標的問題
