canvas左上角的原點座標(0,0) 是否可行定義 |
尚未結案
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
請問各位對繪圖有經驗的朋友 canvas左上角的原點座標(0,0) 可否強制改變成我們定義的座標 EX:(150,0) 我想把整個繪出圖的座標系 往下shift 不是切齊top線出圖..... 抱歉 問的有點攏統 因為我對繪圖完全沒概念 但接到的程式 就是要把報表由a3橫式改直式a4 btw 如果沒辦法如此定義 可否提供方向 是這樣我有個地籍圖線呈現在畫面上 改成直式後 在preview時 因為在paintbox 原本在右側文字 需改到上方 結果整個圖變成如圖例這樣 我想把繪製出來的圖整個座標系 往下拉第二個圖框裡面 BUT就是試不出來 發表人 - src="http://delphi.ktop.com.tw/loadfile.php?TOPICID=19420098&CC=434322"> 發表人 - isthatu 於 2004/12/22 20:14:45
------
BCDEFHIJKLMNOPQRSTUVWXZ |
Zard
尊榮會員 發表:24 回覆:396 積分:539 註冊:2003-11-26 發送簡訊給我 |
試試
SetViewportOrgEx The SetViewportOrgEx function specifies which device point maps to the window origin (0,0). BOOL SetViewportOrgEx( HDC hdc, // handle to device context int X, // new x-coordinate of viewport origin int Y, // new y-coordinate of viewport origin LPPOINT lpPoint // original viewport origin ); Parameters hdc : Handle to the device context. X : Specifies the x-coordinate, in device units, of the new viewport origin. Y : Specifies the y-coordinate, in device units, of the new viewport origin. lpPoint : Pointer to a POINT structure that receives the previous viewport origin, in device coordinates. If lpPoint is NULL, this parameter is not used. Example: //map the logical point (0,0) to the device point (xViewOrg, yViewOrg) SetViewportOrgEx ( hdc, xViewOrg, yViewOrg, NULL) |
elvis1000
一般會員 發表:6 回覆:50 積分:16 註冊:2004-12-18 發送簡訊給我 |
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
引言: 試試謝謝! 不過我試不太出來 SetViewportOrgEx ( hdc, xViewOrg, yViewOrg, NULL) 我想把previewform上面 paintbox的canvas原點改成(150,0) 不曉的該怎麼去做 尤其參數HDC hdc, // handle to device context 是個 integer型態 不曉得該給啥麼 我試過 SetViewportOrgEx ( paintbox.canvas1, 150, 0, nil) 會顯示paintbox.canvas1 Tcanvas與integer型態不符 如果說隨便給個integer compile 可以過 EX: SetViewportOrgEx ( 1, 150, 0, nil) 但我不曉得 1對這fucntion到底在定義啥 同理下2,3,4....也一樣!SetViewportOrgEx The SetViewportOrgEx function specifies which device point maps to the window origin (0,0). Example: //map the logical point (0,0) to the device point (xViewOrg, yViewOrg) SetViewportOrgEx ( hdc, xViewOrg, yViewOrg, NULL)
------
BCDEFHIJKLMNOPQRSTUVWXZ |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
|
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
引言: HDC 傳入 Paintbox.Canvas.Handle 請參閱 TCanvas.Handle 的 online help 加油喔,喵~謝謝 不過好像無法達到我預期的 如圖例 我要把線段A 重新定意原點座標 再畫一次到線條粗的位置 結果試了 (線段C) SetViewPortorgEx(PaintBox1.Canvas.Handle,0,100,nil); paintBox1.Canvas.MoveTo (0,0); PaintBox1.Canvas.LineTo (100,100); (線段B) SetViewPortorgEx(PaintBox1.Canvas.Handle,100,100,nil); paintBox1.Canvas.MoveTo (0,0); PaintBox1.Canvas.LineTo (100,100); 就時無法把整個Y軸往下SHIFT 100 ----------------------------------------------------- (A) procedure TForm1.Button1Click(Sender: TObject); var i :integer; begin paintBox1.Canvas.MoveTo (0,0); PaintBox1.Canvas.LineTo (0,500); for i:=0 to 50 do begin paintBox1.Canvas.MoveTo (0,i*10); PaintBox1.Canvas.LineTo (100,i*10); end; paintBox1.Canvas.MoveTo (0,0); PaintBox1.Canvas.LineTo (100,100); end; (C) procedure TForm1.Button2Click(Sender: TObject); begin SetViewPortorgEx(PaintBox1.Canvas.Handle,100,100,nil); paintBox1.Canvas.MoveTo (0,0); PaintBox1.Canvas.LineTo (100,100); end; (B) procedure TForm1.Button3Click(Sender: TObject); begin SetViewPortorgEx(PaintBox1.Canvas.Handle,0,100,nil); paintBox1.Canvas.MoveTo (0,0); PaintBox1.Canvas.LineTo (100,100); end; 發表人 - isthatu 於 2004/12/23 12:51:39
------
BCDEFHIJKLMNOPQRSTUVWXZ |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
試試看,用以下程式
procedure TForm1.Button1Click(Sender: TObject); begin OffsetViewportOrgEx(PaintBox1.Canvas.Handle, 0, 100, nil); PaintBox1.Canvas.MoveTo(0,0); PaintBox1.Canvas.LineTo(100,100); end;加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
isthatu
初階會員 發表:80 回覆:47 積分:25 註冊:2002-06-26 發送簡訊給我 |
引言: 試試看,用以下程式謝謝 用你的提供方法確實 可以把座標往下移 不過 這張報表好像沒有我想像的簡單 整個地圖的原始座標點 經計算方式 再轉到preview螢幕上 不單只改變原點座標 往下shift就好....總之 是個很麻煩的東西 不過 還是謝謝各位高手回答 3Qprocedure TForm1.Button1Click(Sender: TObject); begin OffsetViewportOrgEx(PaintBox1.Canvas.Handle, 0, 100, nil); PaintBox1.Canvas.MoveTo(0,0); PaintBox1.Canvas.LineTo(100,100); end;加油喔,喵~
------
BCDEFHIJKLMNOPQRSTUVWXZ |
sryang
尊榮會員 發表:39 回覆:762 積分:920 註冊:2002-06-27 發送簡訊給我 |
建議研究一下 GDI 中與座標系相關的幾個 API
從 Delphi 內附的說明文件中,打開 "Win32 Developer's References"
用 "Coordinate Space and Transformation Functions" 關鍵字搜尋 例如:如果要縮放座標系的話,可以用
ScaleViewportExtEx(hdc, Xnum, Xdenom, Ynum, Ydenom, nil);
就可以把 X 軸 * Xnum / Xdenom,Y 軸 * Ynum / Ydenom 加油喔,喵~
------
歡迎參訪 "腦殘賤貓的備忘錄" http://maolaoda.blogspot.com/ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |