如何擷取某元件內的圖(含不可視範圍)? |
答題得分者是:jcjroc
|
mysteriousGE
一般會員 發表:4 回覆:3 積分:1 註冊:2011-03-14 發送簡訊給我 |
我現在使用的是BCB6中的TdxFlowChart元件 現在想要製作預覽列印的功能 也就是我希望將TdxFlowChart中「整個畫面」擷取出來 存入某Canvas以製作預覽列印的功能 所謂「整個畫面」是包含捲軸捲動後可視的範圍 目前嘗試過 使用Handle、GetDC()等方式從螢幕上直接擷取畫面 但這個方法無法取得「不可視」範圍的圖,除此之外也可能擷取到某些檔在前面的視窗畫面 故不是很妥當... 請問有什麼方式可以取得TdxFlowChart上「整個圖」呢? 請給我一點方向~~ 謝謝各位版友! 編輯記錄
mysteriousGE 重新編輯於 2011-10-26 00:25:28, 註解 無‧
|
jcjroc
高階會員 發表:21 回覆:279 積分:115 註冊:2002-09-18 發送簡訊給我 |
|
mysteriousGE
一般會員 發表:4 回覆:3 積分:1 註冊:2011-03-14 發送簡訊給我 |
|
mysteriousGE
一般會員 發表:4 回覆:3 積分:1 註冊:2011-03-14 發送簡訊給我 |
參考此篇文章,我找到答案了!!
雖然有部份的Code我不是很懂為什麼要這樣寫,但土法煉鋼把他拼出來了 我詳細的Code如下: (※我要列印的圖假設是只有橫向捲軸出現的情況,所以特別擷取橫向畫布寬度) //先算出畫布總寬度 int oriLeftEdge = dxFlowChart_Main->LeftEdge; dxFlowChart_Main->LeftEdge = TO_END; int canvasWidth = dxFlowChart_Main->LeftEdge dxFlowChart_Main->Width; dxFlowChart_Main->LeftEdge = oriLeftEdge; Graphics::TBitmap* memoryBitmap = new Graphics::TBitmap; memoryBitmap->Width = canvasWidth; memoryBitmap->Height = dxFlowChart_Main->ClientHeight; TPoint Position; TControl* flowChartControl = ((TControl*) dxFlowChart_Main); int iSaveIndex = SaveDC(memoryBitmap->Canvas->Handle); GetViewportOrgEx( memoryBitmap->Canvas->Handle, &Position); SetViewportOrgEx( memoryBitmap->Canvas->Handle, Position.x - flowChartControl->Left, Position.y - flowChartControl->Top, NULL); IntersectClipRect(memoryBitmap->Canvas->Handle, 0, 0, canvasWidth , flowChartControl->ClientHeight); flowChartControl->Perform(WM_ERASEBKGND, (int)memoryBitmap->Canvas->Handle, 0); flowChartControl->Perform(WM_PAINT, (int)memoryBitmap->Canvas->Handle, 0); RestoreDC(memoryBitmap->Canvas->Handle, iSaveIndex); PrintCanvas->CopyRect(Rect(0,0,pageRightBound,dxFlowChart_Main->Height),memoryBitmap->Canvas,Rect(0,0,canvasWidth,dxFlowChart_Main->Height)); 打完收工!! 感謝曾經回應的大大!
編輯記錄
mysteriousGE 重新編輯於 2011-11-09 01:15:57, 註解 無‧
mysteriousGE 重新編輯於 2011-11-09 01:16:36, 註解 無‧ mysteriousGE 重新編輯於 2011-11-09 01:16:54, 註解 無‧ mysteriousGE 重新編輯於 2011-11-09 01:17:41, 註解 Code都貼不好,改為純文字‧ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |