求画圆的算法(函数设置两个参数,一个是圆心坐标,另一个是圆周上任意点的坐标)
解决方案 »
- 如何获取托盘图标的 WM_MOUSELEAVE 消息。
- button控件消去虚线边框问题
- 单文档-客户区-对话框的问题
- 子窗口获取焦点的问题
- 这个compile错误是怎么回事?
- 如何根据一个对话框的句柄得到该对话框的指针?
- 80分, 谁能给个链接, 能下载"《NT/2000 Navite API Reference》"
- WIN2000下串行通讯问题,请大家指点一下
- 那位大哥有图的遍历算法源代码,up有分
- 谁有好的编程习惯?好的变量命名方法?程序员之间的怎样接口???
- 用settime(1,1000,NULL)设置一个定时器后,不用killtime而再次激发定时器在时间的或者时序上是否受到影响/??是不是消息阻塞什么的?定时还
- 二叉树查找算法-在线等
/////////////////////////////////////////////////////////////////////////////
// Draw a circle
/////////////////////////////////////////////////////////////////////////////
void circleMidpoint(int xCenter,int yCenter,int radius,HDC dc)
{
int x = 0;
int y = radius;
int p=1-radius;
while(x<y)
{
x++;
if(p<0)
{
p+=2*x+1;
}
else
{
y--;
p+=2*(x-y)+1;
}
SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0)); SetPixel(dc,xCenter+y,yCenter+x,RGB(255,0,0));
SetPixel(dc,xCenter-y,yCenter+x,RGB(255,0,0));
SetPixel(dc,xCenter+y,yCenter-x,RGB(255,0,0));
SetPixel(dc,xCenter-y,yCenter-x,RGB(255,0,0));
}
}
{
int r = sqrt((pCentre.x - pCircle.x)*(pCentre.x - pCircle.x)+(pCentre.y-pCircle.y)*(pCentre.y-pCircle.y));
int d = sin(0.78539815)*r;
CRect cirRect(pCentre.x-d,pCentre.y-d,pCentre.x+d,pCentre.y+d);
pDC->Ellipse(&cirRect);
}
void CTestDlg::DrawCircle(CDC *pDC, CPoint pCentre, CPoint pCircle)
{
int r = sqrt((pCentre.x - pCircle.x)*(pCentre.x - pCircle.x)+(pCentre.y-pCircle.y)*(pCentre.y-pCircle.y));
CRect cirRect(pCentre.x-r,pCentre.y-r,pCentre.x+r,pCentre.y+r);
pDC->Ellipse(&cirRect);
// pDC->SetPixel(pCentre,RGB(255,0,0));
// pDC->SetPixel(pCircle,RGB(255,0,0));
}
CPoint RectLU,RectRD,Circle;//圆心坐标
RectLU=RectRD=Circle;
RectLU.Offset(-nr,-nr);
RectRD.Offset(nr,nr);
pdc->Ellipse(CRect(RectLU,RectRD));
我也来一个。