当前位置: 首页>>代码示例>>C++>>正文


C++ CComPtr::AddLine方法代码示例

本文整理汇总了C++中CComPtr::AddLine方法的典型用法代码示例。如果您正苦于以下问题:C++ CComPtr::AddLine方法的具体用法?C++ CComPtr::AddLine怎么用?C++ CComPtr::AddLine使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在CComPtr的用法示例。


在下文中一共展示了CComPtr::AddLine方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: RegenerateGeometry

void CWedgeDrawer::RegenerateGeometry()
{
	// Points on horizontal line:
	// x^2 + y^2 = r^2      and     y = m
	// => x^2 = r^2 - m^2
	D2D1_POINT_2F p0 = D2D1::Point2F(
		(FLOAT)sqrt(mInnerRadius*mInnerRadius - mMarginThickness*mMarginThickness),
		(FLOAT)mMarginThickness);
	D2D1_POINT_2F p3 = D2D1::Point2F(
		(FLOAT)sqrt(mOuterRadius*mOuterRadius - mMarginThickness*mMarginThickness),
		(FLOAT)mMarginThickness);

	D2D1::Matrix3x2F rotation = D2D1::Matrix3x2F::Rotation((FLOAT)mSweep);
	D2D1_POINT_2F p1 = rotation.TransformPoint(
		D2D1::Point2F((FLOAT)mInnerRadius, -(FLOAT)mMarginThickness));
	D2D1_POINT_2F p2 = rotation.TransformPoint(
		D2D1::Point2F((FLOAT)mOuterRadius, -(FLOAT)mMarginThickness));

	// Points on other line:
	// x^2 + y^2 = r^2     &     y = mx + b
	// => m^2+1!=0 (i.e. angles not equal to 90 degrees)
	//    x = (-sqrt(-b^2+m^2 r^2+r^2)-b m)/(m^2+1)
	//    y = (b-m sqrt(-b^2+m^2 r^2+r^2))/(m^2+1)

	// Create the figure
	mGeometry.Release();
	mFactory->CreatePathGeometry(&mGeometry);
	{
		CComPtr<ID2D1GeometrySink> sink;
		mGeometry->Open(&sink);
		sink->BeginFigure(p0, D2D1_FIGURE_BEGIN_FILLED);
		sink->AddArc(D2D1::ArcSegment(p1, 
			D2D1::SizeF((FLOAT)mInnerRadius, (FLOAT)mInnerRadius), 0,
			D2D1_SWEEP_DIRECTION_CLOCKWISE, D2D1_ARC_SIZE_SMALL));
		sink->AddLine(p2);
		sink->AddArc(D2D1::ArcSegment(p3, 
			D2D1::SizeF((FLOAT)mOuterRadius, (FLOAT)mOuterRadius), 0,
			D2D1_SWEEP_DIRECTION_COUNTER_CLOCKWISE, D2D1_ARC_SIZE_SMALL));
		sink->EndFigure(D2D1_FIGURE_END_CLOSED);
		sink->Close();
	}
}
开发者ID:ben,项目名称:WTLAlphaTest,代码行数:42,代码来源:WedgeDrawer.cpp


注:本文中的CComPtr::AddLine方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。