顺时针与逆时针

顺时针与逆时针
代码部分
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);

CPoint Twelve(0, rect.Width()/2), Three(rect.Height()/2, 0);

CPen penBlack, penBlue, *pOldPen;
penBlack.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));

pDC->SetArcDirection(AD_CLOCKWISE);
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rect, Twelve, Three);

pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pOldPen = pDC->SelectObject(&penBlack);
pDC->Arc(rect, Twelve, Three);

pDC->SelectObject(pOldPen);
编译后
--------------------Configuration: Method - Win32 Debug--------------------
Compiling...
Skipping... (no relevant changes detected)
MethodView.cpp

MethodView.obj - 0 error(s), 0 warning(s)
链接后
--------------------Configuration: Method - Win32 Debug--------------------
Linking...

Method.exe - 0 error(s), 0 warning(s)
运行后,没有得到想要的结果。
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);

CPoint Twelve(0, rect.Height()/2), Three(rect.Width()/2, 0);

CPen penBlack, penBlue, * pOldPen;
penBlue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
penBlack.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));

pDC->SetArcDirection(AD_CLOCKWISE);
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rect, Twelve, Three);

pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pOldPen = pDC->SelectObject(&penBlack);
pDC->Arc(rect, Twelve, Three);

pDC->SelectObject(pOldPen);
=============================================================分割线================================================================
CRect rect;
GetClientRect(&rect);
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

rect.OffsetRect(-rect.Width()/2, -rect.Height()/2);

CPoint Twelve(0, rect.Height()/2), Three(rect.Width()/2, 0);

CPen penBlack, penBlue, * pOldPen;
penBlue.CreatePen(PS_SOLID, 1, RGB(0, 0, 255));
penBlack.CreatePen(PS_DASHDOT, 1, RGB(255, 0, 0));

pDC->SetArcDirection(AD_CLOCKWISE);
pOldPen = pDC->SelectObject(&penBlue);
pDC->Arc(rect, Twelve, Three);

pDC->SetArcDirection(AD_COUNTERCLOCKWISE);
pOldPen = pDC->SelectObject(&penBlack);
pDC->Arc(rect, Twelve, Three);

pDC->SelectObject(pOldPen);
现在可以得到正常结果,对比上下代码,可能无法找到区别
pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetWindowExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);

pDC->SetWindowExt(rect.Width(), rect.Height());
pDC->SetViewportExt(rect.Width(), -rect.Height());
pDC->SetViewportOrg(rect.Width()/2, rect.Height()/2);
现在区别明显一些,在坐标系的设置上有着问题。编译,链接都无法找到错误的地方,仅仅是没有预期的结果。

转载于:https://www.cnblogs.com/qbin/p/4965849.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值