以下代码段已通过编译,但在运行时总是调用失败,无法画出曲线???!!!第一次使用PolyDraw函数,请帮忙看看是哪出了问题???POINT labelPoints[10];
BYTE types[10];
... // 起始线段端点
labelPoints[0].x = psm.labelStart.x; + offset;
labelPoints[0].y = psm.labelStart.y + labelHeight;
types[0] = PT_MOVETO; leftCornerArcCenter.x = labelPoints[0].x + labelBottomExtend + psm.labelCornerArcRadii;
leftCornerArcCenter.y = labelPoints[0].y - labelHeight + psm.labelCornerArcRadii;
rightCornerArcCenter.x = leftCornerArcCenter.x + (labelTopWidth - psm.labelCornerArcRadii * 2);
rightCornerArcCenter.y = leftCornerArcCenter.y; x = labelHeight - psm.labelCornerArcRadii;
y = labelBottomExtend + psm.labelCornerArcRadii;
z = ::sqrt((x * x) + (y * y));
a = ::acos(x / z);
b = ::acos(psm.labelCornerArcRadii / z);
c = pi - a - b;
x = ::sin(c) * psm.labelCornerArcRadii + 0.5;
y = ::cos(c) * psm.labelCornerArcRadii + 0.5; // 线段端点
labelPoints[1].x = leftCornerArcCenter.x - x;
labelPoints[1].y = leftCornerArcCenter.y - y;
types[1] = PT_LINETO; // 控制端点
labelPoints[2].x = labelPoints[1].x +
labelBottomExtend * (psm.labelCornerArcRadii - y) / (labelHeight - (psm.labelCornerArcRadii - y));
labelPoints[2].y = psm.labelStart.y;
types[2] = PT_BEZIERTO;
labelPoints[3].x = labelPoints[0].x;
labelPoints[3].y = labelPoints[0].y;
types[3] = PT_BEZIERTO; // 控制端点型线段端点
labelPoints[4].x = leftCornerArcCenter.x;
labelPoints[4].y = leftCornerArcCenter.y - psm.labelCornerArcRadii;
types[4] = PT_BEZIERTO; // 线段端点
labelPoints[5].x = rightCornerArcCenter.x;
labelPoints[5].y = labelPoints[4].y;
types[5] = PT_LINETO; // 控制端点
labelPoints[6].x = labelPoints[5].x + psm.labelCornerArcRadii;
labelPoints[6].y = psm.labelStart.y;
types[6] = PT_BEZIERTO;
labelPoints[7].x = labelPoints[6].x;
labelPoints[7].y = labelPoints[6].y;
types[7] = PT_BEZIERTO; // 控制端点型线段端点
labelPoints[8].x = rightCornerArcCenter.x + psm.labelCornerArcRadii;
labelPoints[8].y = rightCornerArcCenter.y;
types[8] = PT_BEZIERTO; // 闭合线段端点
labelPoints[9].x = labelPoints[8].x;
labelPoints[9].y = labelPoints[0].y;
types[9] = PT_CLOSEFIGURE; if(!pDC->PolyDraw(labelPoints, types, 10))MessageBox(_T("调用失败1"));
BYTE types[10];
... // 起始线段端点
labelPoints[0].x = psm.labelStart.x; + offset;
labelPoints[0].y = psm.labelStart.y + labelHeight;
types[0] = PT_MOVETO; leftCornerArcCenter.x = labelPoints[0].x + labelBottomExtend + psm.labelCornerArcRadii;
leftCornerArcCenter.y = labelPoints[0].y - labelHeight + psm.labelCornerArcRadii;
rightCornerArcCenter.x = leftCornerArcCenter.x + (labelTopWidth - psm.labelCornerArcRadii * 2);
rightCornerArcCenter.y = leftCornerArcCenter.y; x = labelHeight - psm.labelCornerArcRadii;
y = labelBottomExtend + psm.labelCornerArcRadii;
z = ::sqrt((x * x) + (y * y));
a = ::acos(x / z);
b = ::acos(psm.labelCornerArcRadii / z);
c = pi - a - b;
x = ::sin(c) * psm.labelCornerArcRadii + 0.5;
y = ::cos(c) * psm.labelCornerArcRadii + 0.5; // 线段端点
labelPoints[1].x = leftCornerArcCenter.x - x;
labelPoints[1].y = leftCornerArcCenter.y - y;
types[1] = PT_LINETO; // 控制端点
labelPoints[2].x = labelPoints[1].x +
labelBottomExtend * (psm.labelCornerArcRadii - y) / (labelHeight - (psm.labelCornerArcRadii - y));
labelPoints[2].y = psm.labelStart.y;
types[2] = PT_BEZIERTO;
labelPoints[3].x = labelPoints[0].x;
labelPoints[3].y = labelPoints[0].y;
types[3] = PT_BEZIERTO; // 控制端点型线段端点
labelPoints[4].x = leftCornerArcCenter.x;
labelPoints[4].y = leftCornerArcCenter.y - psm.labelCornerArcRadii;
types[4] = PT_BEZIERTO; // 线段端点
labelPoints[5].x = rightCornerArcCenter.x;
labelPoints[5].y = labelPoints[4].y;
types[5] = PT_LINETO; // 控制端点
labelPoints[6].x = labelPoints[5].x + psm.labelCornerArcRadii;
labelPoints[6].y = psm.labelStart.y;
types[6] = PT_BEZIERTO;
labelPoints[7].x = labelPoints[6].x;
labelPoints[7].y = labelPoints[6].y;
types[7] = PT_BEZIERTO; // 控制端点型线段端点
labelPoints[8].x = rightCornerArcCenter.x + psm.labelCornerArcRadii;
labelPoints[8].y = rightCornerArcCenter.y;
types[8] = PT_BEZIERTO; // 闭合线段端点
labelPoints[9].x = labelPoints[8].x;
labelPoints[9].y = labelPoints[0].y;
types[9] = PT_CLOSEFIGURE; if(!pDC->PolyDraw(labelPoints, types, 10))MessageBox(_T("调用失败1"));
解决方案 »
- 怎么添加成员变量??
- 怎样在工具栏上同时显示位图和文本标签
- MFC中显示程序运行状态
- 那位大侠帮忙看看这个奇怪的问题
- 如何更改其它程序的图标啊
- 有用过RasGetEapUserIdentity的吗
- 请问在VC中怎样实现ACCESS 中的 数据库压缩与修复数据库 功能
- AtiveX 控件中如何产生二级属性和方法
- 我的程序执行时,出现这样的信息,什末意思,怎末解决呢???谢谢
- 大家互助一下吧::VC经验总结之初学(勿发废贴,多谢)
- 如何在 CDialog 窗口创建完成后,立即执行任务??
- 强烈谴责清华紫光咨询事业部上海地区负责SAP的谭经理,不把程序员当人看,快和北京泰斯哒公司一样了,如果你还有一点良知,那就请进来骂
我在这里用其他的GDI函数都可以正常绘图,比如MoveTo,LineTo,Arc,Polygon,PolyBezier等都没问题,惟独就PolyDraw有问题。