本文整理汇总了C++中CAtlArray::SetAt方法的典型用法代码示例。如果您正苦于以下问题:C++ CAtlArray::SetAt方法的具体用法?C++ CAtlArray::SetAt怎么用?C++ CAtlArray::SetAt使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类CAtlArray
的用法示例。
在下文中一共展示了CAtlArray::SetAt方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: CreateSplineCoeffs
void Glyph::CreateSplineCoeffs(const CRect& spdrc)
{
spline.RemoveAll();
if (style.placement.path.IsEmpty()) {
return;
}
size_t i = 0, j = style.placement.path.GetCount();
CAtlArray<Point> pts;
pts.SetCount(j + 2);
Point p;
while (i < j) {
p.x = style.placement.path[i].x * scale.cx + spdrc.left * 64;
p.y = style.placement.path[i].y * scale.cy + spdrc.top * 64;
pts[++i] = p;
}
if (pts.GetCount() >= 4) {
if (pts[1].x == pts[j].x && pts[1].y == pts[j].y) {
pts.SetAt(0, pts[j - 1]);
pts.SetAt(j + 1, pts[2]);
} else {
p.x = pts[1].x * 2 - pts[2].x;
p.y = pts[1].y * 2 - pts[2].y;
pts.SetAt(0, p);
p.x = pts[j].x * 2 - pts[j - 1].x;
p.y = pts[j].y * 2 - pts[j - 1].y;
pts.SetAt(j + 1, p);
}
spline.SetCount(pts.GetCount() - 3);
for (size_t i = 0, j = pts.GetCount() - 4; i <= j; i++) {
static const float _1div6 = 1.0f / 6;
SplineCoeffs sc;
sc.cx[3] = _1div6 * (- pts[i + 0].x + 3 * pts[i + 1].x - 3 * pts[i + 2].x + pts[i + 3].x);
sc.cx[2] = _1div6 * (3 * pts[i + 0].x - 6 * pts[i + 1].x + 3 * pts[i + 2].x);
sc.cx[1] = _1div6 * (-3 * pts[i + 0].x + 3 * pts[i + 2].x);
sc.cx[0] = _1div6 * (pts[i + 0].x + 4 * pts[i + 1].x + 1 * pts[i + 2].x);
sc.cy[3] = _1div6 * (- pts[i + 0].y + 3 * pts[i + 1].y - 3 * pts[i + 2].y + pts[i + 3].y);
sc.cy[2] = _1div6 * (3 * pts[i + 0].y - 6 * pts[i + 1].y + 3 * pts[i + 2].y);
sc.cy[1] = _1div6 * (-3 * pts[i + 0].y + 3 * pts[i + 2].y);
sc.cy[0] = _1div6 * (pts[i + 0].y + 4 * pts[i + 1].y + 1 * pts[i + 2].y);
spline.SetAt(i, sc);
}
}
}