绘制缩放曲线



假设:

画布大小为sx, sy;

图像大小为bx, by;

画布边框为kx, ky;

求:

线数据d.n(值d.v.i)在画布上的点x,y



x(sx) = (d.n(sx - 2kx)/bx)+kx

y(sy) = (d.v.i(sy-2ky)/by)-ky




实现方法(winSDK):

假设:
画布大小为sx, sy;
图像大小为bx, by;
画布边框为kx, ky;
求:
线数据d.n(值d.v.i)在画布上的点x,y


则
x(sx) = (d.n(sx - 2kx)/bx)+kx
y(sy) = (d.v.i(sy-2ky)/by)-ky



实现方法(winSDK):

void DrawWave(HDC hdc, RECT rc, struct DATA *data)
{
	int i;

	int dmax,dmin;
	int x,y;
	int sx, sy;
	int bx, by;
	int kx, ky;

        //图像实际大小
	bx = data->number;
	compMaxMin(data->val, bx, &dmax, &dmin);  //求最大最小值
	by = dmax - dmin;
	if(!by) by = 1;
	if(!(bx && by)) continue;

        //边框大小
	kx = ky = 2;

        //画布大小
	sx = rc.right - rc.left;
	sy = rc.bottom - rc.top;

        //绘制
	y = sy - ((data->val[0] - dmin) * (sy - 2*ky) / by) - ky;
	MoveToEx(hdc, kx, y, NULL);   //第一点位置
	for(i=1; i<data->number; i++)
	{
		x = (i * (sx - 2*kx) / bx) + kx;
		y = sy - ((data->val[i] - dmin) * (sy - 2*ky) / by) - ky;
		LineTo(hdc, x, y);    //连接上一点到当前点
	}
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值