座標系轉換,客戶區座標轉換成邏輯

2021-06-19 11:51:44 字數 2303 閱讀 2018

客戶區座標轉換成邏輯座標或其它你想要的座標。

轉換座標核心**如下,其中最關鍵的一步為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...