vs2010下计算机图形学常见编译问题
1、转换到 COFF 期间失败: 文件无效或损坏
方案1
点击“项目”–>“属性”–> “清单工具”,
然后选择"输入和输出’–> ‘嵌入清单’,将后面的‘是’改成‘否’
方案2
在VS安装目录中搜索cvtres.exe,发现有两个cvtres.exe文件,保留最新的那个,改名留存其他;也有搜索到好多cvtres.exe的情况,不妨试试如何删除这些文件,常规情况下两个文件目录如下:
D:\ProgramFiles (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64
D:\Program Files (x86)\Microsoft VisualStudio 10.0\VC\bin
2、VS2010 有多个重载函数"sqrt"实例与参数列表匹配
在定义param的时候是int型,而sqrt()中应该使用double型或float型,因此,可修改为:sqrt(param*1.0)
3、error C2039: “ZCircle”: 不是“CMy200032590100Doc”的成员
有可能是Doc.h和Doc.cpp中函数定义冲突造成的,检查一下两个函数的定义是否一致。
4、解决自己定义亦或色的问题
#define GetRValue(rgb) ((BYTE)(rgb))
#define GetGValue(rgb) ((BYTE)(((WORD)(rgb)) >> 8))
#define GetBValue(rgb) ((BYTE)((rgb)>>16))
COLORREF color = RGB(
255- GetRValue(m_crColor),
255- GetGValue(m_crColor),
255- GetBValue(m_crColor));
//使用新颜色即可
5、做完圆裁剪之后,发现B圆的绘制不能修改颜色或者不出现B圆
方案1 将BCircle中的代码改回原样
将
void CMy200032590100Doc::BCircle(
CClientDC * DCPoint,
CPoint p1,
CPoint p2)
{
CRect rc;
bool a=DCPoint->GetBoundsRect(&rc,0);
BCircle(DCPoint,&rc,p1,p2);
}
修改为:
void CMy200032590100Doc::BCircle(
CClientDC *DCPoint,
CPoint p1,
CPoint p2)
{
int r,d,x,y,x0,y0;
DCPoint->SetROP2(R2_COPYPEN); //绘图方法为直接画
r=(int)sqrt((p1.x-p2.x)*(p1.x-p2.x)
+(p1.y-p2.y)*(p1.y-p2.y));
x=0;y=r;d=3-2*r;x0=p1.x;y0=p1.y;
while(x<y||x==y)
{
DCPoint->SetPixel(x+x0,y+y0,m_crColor);
DCPoint->SetPixel(-x+x0,y+y0,m_crColor);
DCPoint->SetPixel(x+x0,-y+y0,m_crColor);
DCPoint->SetPixel(-x+x0,-y+y0,m_crColor);
DCPoint->SetPixel(y+x0,x+y0,m_crColor);
DCPoint->SetPixel(-y+x0,x+y0,m_crColor);
DCPoint->SetPixel(y+x0,-x+y0,m_crColor);
DCPoint->SetPixel(-y+x0,-x+y0,m_crColor);
x=x+1;
if(d<0||d==0)
{
d=d+4*x+6;
}
else
{
y=y-1;d=d+4*(x-y)+10;
}
};
}
方案2 修改BCircle函数
//bool a = DCPoint->GetBoundsRect(&rc,0);
CWnd *pWnd = AfxGetMainWnd();
pWnd->GetClientRect(&rc);