問題的內容是:
我知道 visual basic 裡頭有一個指令叫 pset ,但是我覺得那個指令很慢很慢
...
而我使用的又是畫數學函式的圖,因此座標軸需要正負號,就是四個象限的意思
在 VB 裡頭,我可以很輕易的使用 Scale(-100,100,100,-100)的指令來設定座標軸
當然也可以使用 line 的方法,或是 pset 的方法來畫圖。
後來我發現可以使用 setpixel 來畫,因此想用 API 的 setpixel 來做...但是遇
到了一個問題:
1.由於 hdc 的畫布的原點(0,0)是在左上角,我如何把整個座標軸重新 Scale ,不然
我畫的點的位置都不對
也就是把 hdc 的原點搬到正中央。請問我該怎麼做呢?
我知道 visual basic 裡頭有一個指令叫 pset ,但是我覺得那個指令很慢很慢
...
而我使用的又是畫數學函式的圖,因此座標軸需要正負號,就是四個象限的意思
在 VB 裡頭,我可以很輕易的使用 Scale(-100,100,100,-100)的指令來設定座標軸
當然也可以使用 line 的方法,或是 pset 的方法來畫圖。
後來我發現可以使用 setpixel 來畫,因此想用 API 的 setpixel 來做...但是遇
到了一個問題:
1.由於 hdc 的畫布的原點(0,0)是在左上角,我如何把整個座標軸重新 Scale ,不然
我畫的點的位置都不對
也就是把 hdc 的原點搬到正中央。請問我該怎麼做呢?
文章標籤
全站熱搜

因為 SetPixel 用的是 hDC 座標! VB已包裝了 Scale 的系統, 所以 VB PSet 會對應到 VB 座標... Windows API 有一系列設定 hDC 座標的 API, 不過我的經驗是還是自己做比較好... 因為裡面還有很多奇怪的限制 (ex. < 2^27) , 實際用根本是 < 2^16 ... 所以我目前都自行定義...
那就是說,如果想用 setpixel 來畫點 座標就要自己用算的囉? 例如 200,200 對應到 0,0 ?
這是法 1. 法 2. 你也可以對 hDC 做 Scale ... 不過我也不知道你會不會用... 相關 API 函數如下: SetMapMode SetWindowExtEx SetWindowOrgEx SetViewportExtEx SetViewportOrgEx ScaleWindowExtEx ScaleViewportExtEx