圆动c语言,动圆1(c语言程序).doc

该篇博客介绍了一个使用C++ MFC库编写的C语言程序,用于绘制动态圆图。程序通过计算各扇形的面积比例并进行饼状划分,展示了数据分布。其中,特定扇形会被突出显示,并通过位移来突出表现。代码中定义了常量、数据数组,并用srand和time函数生成随机数据,动态更新突出显示的扇形,实现了动态效果。
摘要由CSDN通过智能技术生成

动圆1(c语言程序)

CClientDC* pDC = new CClientDC(this);

const double PI = 3.1415926536, _2PI = PI + PI; #define Sum s[n - 1]

const int r = 200, p = 20;

const int x0=r+20, y0=r+20, x1=x0-r, y1=y0-r, x2=x0+r, y2=y0+r;

int n = 5, *data = new int[n], *s = new int[n];

static int promin = 0;

data[0] = 2;

data[1] = 3;

data[2] = 5;

data[3] = 1;

data[4] = 7; // 演示数据

int x3, y3, x4, y4;

double theta3, theta4, thetam, tx, ty;

#define R 156+ rand() % 100

CBrush br, *p_br;

CRect rc;

GetClientRect(&rc);

DC->Rectangle(0, 0, rc.right, rc.bottom); // 清屏

int i;

for(s[0] = data[0], i = 1; i < n; ++i)

s[i] = s[i - 1] + data[i];

srand((unsigned)time(NULL));

for(theta3 = 0.0, x3 = x0 + r, y3 = y0, i = 0; i < n; ++i)

{

theta4 = _2PI * s[i] / Sum;

x4 = x0 + r * cos(theta4);

y4 = y0 + r * sin(theta4);

if(i != promin) tx = ty = 0;

// 如果不是要突出的那个扇形,其位置不必调节(位移量为0)

else

{

thetam = (theta3 + theta4) * 0.5; // 扇形的中心角

tx = p * cos(thetam) * (_2PI - theta4 + theta3) / _2PI;

ty = p * sin(thetam) * (_2PI - theta4 + theta3) / _2PI;

// 如果是要突出的那个扇形,则沿中心角方向向外位移(tx, ty)

}

br.CreateSolidBrush(RGB(R, R, R));

p_br = pDC -> SelectObject(&br);

pDC -> Pie(x1+tx, y1+ty, x2+tx, y2+ty, x4+tx, y4+ty, x3+tx, y3+ty);

theta3 = theta4;

x3 = x4;

y3 = y4;

pDC -> SelectObject(p_br);

br.DeleteObject();

}

delete data;

delete s;

delete pDC;

promin = (promin + 1) % n;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值