U E D R , A S I H C RSS

MFC/Scaling Mode

{{| |}}

1. ScalableMappingMode

…ฆฌ ขŒํ‘œ™€ žฅ˜ ขŒํ‘œ„˜ งคํ•‘„ €ฒฝํ•  ˆ˜ žˆŠ” ชจ‘Š” ‘€€€ กดžฌํ•œ‹ค.
MM_ISOTROPIC, MM_ANISOTROPIC
 „ž˜ ฒƒ€ x, yถ•— Œ€ํ•œ scale factor ™ํ•˜ฒŒ, ํ›„žŠ” ฐฐ ‹คฅดฒŒ „ •ํ•˜Š” ฒƒด €Šฅํ•˜‹ค.

WindowOrigin œˆ„šฐ˜ ™ชฝ ƒ‹ …ฆฌ ขŒํ‘œ. CDC::SetWindowOrg() ํ•จˆ˜ ํ˜ธถœํ•ด„œ „ •
WindowExtent …ฆฌ ขŒํ‘œ •ˆ— € •˜–ด žˆŠ” œˆ„šฐ˜ ํฌธฐ. CDC::SetWindowExt()กœ ํ˜ธถœ
ViewportOrigin žฅ˜ ขŒํ‘œ— ˜–ด žˆŠ” œˆ„šฐ˜ ™ชฝ ƒ‹จ˜ ขŒํ‘œ. CDC::SetViewportOrg()กœ ํ˜ธถœ
ViewportExtent žฅ˜ ขŒํ‘œ ‹จœ„˜ œˆ„šฐ˜ ํฌธฐ. CDC::SetViewportExt()ํ•จˆ˜กœ ํ˜ธถœ
ทฐํฌํŠธŠ” …ฆฌขŒํ‘œ€ žฅ˜ขŒํ‘œกœ €ํ™˜˜Š” ํŒŒฉ”ํ„˜ —ญํ• „ ํ•œ‹ค.

2. LogicalCoordinate To DeviceCoordinate

~cpp xDevice = (xLogical - xWindowOrg) * (xViewPortExt / xWindowExt) + xViewportOrg
~cpp yDevice = (yLogical - yWindowOrg) * (yViewPortExt / yWindowExt) + yViewportOrg
ขŒํ‘œ„€ MM_ISOTROPIC, MM_ANISOTROPIC ด™ธ˜ ‹คฅธ ฒƒ€ WindowExt, ViewPortExt € ณ  •˜–ด €ฒฝด ถˆ€Šฅํ•˜‹ค.
CDC::SetWindowExt(), SetViewportExt() ํ˜ธถœํ•ด„ •„ฌดŸฐ €ํ™”€ ƒธฐ€ •ŠŠ”‹ค.

3. ํ™•Œ€ ธฐŠฅ‹œ˜ CScrollView::OnPrepareDC(CDC* pDC, CPrintInfo* pInfo)

~cpp 
// TODO: ํ™•Œ€ ธฐŠฅ˜ ตฌํ˜„„ œ„ํ•ด„œ ทฐํฌํŠธ˜ ฒ”œ„ €ฒฝํ•œ‹ค.
CPainterDC* pDoc = GetDocument();
pDC->SetMapMode(MM_ANISOTROPIC);		// map mode „ •
CSize DocSize = pDoc->GetDocSize();

// MM_LOENGLISH ชจ“œ ›ํ•˜ธฐ •Œฌธ— y˜ ฒ”œ„Š” Œˆ˜€ ˜–ด• ํ•œ‹ค.
DocSize.cy = -DocSize.cy;
pDoc->SetWindowExt(DocSize);		// œˆ„šฐ˜ ฒ”œ„ „ •ํ•œ‹ค.

// ธ˜‹ ํ”ฝ…€˜ ฐœˆ˜ –ปŠ”‹ค.
int xLogPixels = pDC->GetDeviceCaps(LOGPIXELSX);	// ธž— ํ•ด‹ํ•˜Š” žฅ˜  •ณด ฆฌํ„ดํ•œ‹ค. ธ˜‹ ํ”ฝ…€˜ ฐœˆ˜ ฆฌํ„ด. 100‹จœ„
int yLogPixels = pDC->GetDeviceCaps(LOGPIXELSY);

// x™€ y—„œ˜ ทฐ ํฌํŠธ ฒ”œ„ „‹ํ•œ‹ค.
int xExtent = DocSize.cx * m_Scale * xLogPixels / 100;
int yExtent = DocSize.cy * m_Scale * yLogPixels / 100;

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
last modified 2021-02-07 05:23:42
Processing time 0.0166 sec