客戶區座標轉換成邏輯座標或其它你想要的座標。
轉換座標核心**如下,其中最關鍵的一步為pdc->setmapmode(mm_lometric);設定對映模式
cmydoc* pdoc = getdocument();
assert_valid(pdoc);
cpen pen(1,5,rgb(0x7a,0x7a,0x7a));
cclientdc *pdc = new cclientdc(this);
//設定對映模式,單位為0.1mm,引時視窗座標係以客戶區左上角為原點,
//x軸的方向為從左往右,y軸的方向為從下往上
pdc->setmapmode(mm_lometric);
pdc->selectobject(&pen);
//獲得客戶區域
crect rect;
getclientrect(&rect);
//將客戶座標轉換為邏輯座標,
pdc->dptolp(&rect);
//在邏輯座標下,意圖將視口原點所置的位置
csize org(200,-rect.bottom-200);
//將該位置轉換為設定座標,方便移動視口座標原點
pdc->lptodp(&org);
以上是繪製直角座標系的部分**,全部cpp檔案**如下。
// 直角座標系view.cpp : implementation of the cmyview class
//#include "stdafx.h"
#include "直角座標系.h"
#include "直角座標系doc.h"
#include "直角座標系view.h"
#ifdef _debug
#define new debug_new
#undef this_file
static char this_file = __file__;
#endif
/// cmyview
implement_dyncreate(cmyview, cview)
begin_message_map(cmyview, cview)
//}afx_msg_map
// standard printing commands
on_command(id_file_print, cview::onfileprint)
on_command(id_file_print_direct, cview::onfileprint)
on_command(id_file_print_preview, cview::onfileprintpreview)
end_message_map()
/// cmyview construction/destruction
cmyview::cmyview()
bool cmyview::precreatewindow(createstruct& cs)
/// cmyview drawing
void cmyview::ondraw(cdc* pd)
else//刻度為5,15等時,畫出刻度標記,它的長度為2mm}}
//計算y軸可以畫出多少個cm刻度
num = (-rect.bottom-500)/100;
k=y_step;
//相用畫x軸上的座標相同的方法來繪製y軸座標,此時注意繪畫點的改變
for(int j = 1;j<=num*10; j++)
else}}
delete pdc;
// todo: add draw code for native data here}/
// cmyview printing
bool cmyview::onprepareprinting(cprintinfo* pinfo)
void cmyview::onbeginprinting(cdc* , cprintinfo* )
void cmyview::onendprinting(cdc* , cprintinfo* )
/// cmyview diagnostics
#ifdef _debug
void cmyview::assertvalid() const
void cmyview::dump(cdumpcontext& dc) const
cmydoc* cmyview::getdocument() // non-debug version is inline
#endif //_debug
/// cmyview message handlers
程式執行結果圖如下:
怎麼將右手座標系轉換成左手座標系
有兩種 1 z軸取負,然後渲染時背面消隱改為逆時針!2 相機用右手座標 拿一本書來舉例,把這本書直立起來,正面朝向你,然後約定,在左手座標系下,相機在原點位置,朝正z軸方向看,而右手座標系則相反,相機在原點是朝負z軸看的.然後,在右手座標系下,正面的z值比背面大,而現在要轉換成左手座標系,並且要看到...
Canvas 將螢幕座標系轉換成笛卡爾座標系
canvas繪圖裡的座標系是左上角為原點,向右為x正向,向下為y正向,這被稱為螢幕座標系 如果繪製的內容和幾何無關,螢幕座標系倒也沒什麼,熟悉了也就好了 但如果要重現幾何問題,那人工變換來變換去既傷腦筋,也沒必要。我們可以在繪製之前將ctx變換好,如下 進行螢幕座標系到笛卡爾座標系的變換,原點移動到...
Unity UGUI場景座標轉換成UI座標
所用到的api camerahelper.maincamera.worldtoscreenpoint vector3 position recttransformutility.screenpointtolocalpointinrectangle recttransform rect,vector2...