【发布时间】:2010-11-23 05:48:31
【问题描述】:
我有一组 x 坐标 x={0,32,64,...256} 和 y={2,6,4....},我将沿 x_y 轴绘制图形,然后拖动沿 x 轴的点 128 到 64,现在我希望点的左侧被压缩,右侧被放大。如何在 C 中重新计算图形的坐标。 任何帮助表示赞赏。这是我的代码...
int arr_x[]={32,64,96,128,160,192,224,256};
int arr_y[]={7,12,8,6,14,22,18,24};
int x1=64,x2=128; //drag x2 to x1
int min_val=abs(arr_x[0]-x2);
int idx=0;
for (int i = 1; i < 8; i++)
{
if ((abs(arr_x[i] -x2)) < min_val)
{
min_val = abs(arr_x[i] - x2);
idx = i;
}
}
float r;//ratio for compression and enlarge
if(x2>x1)
{
arr_x[idx]=x2;
r=(float)x2/x1;
for(int i=0;i<=idx;i++)
{
arr_x[i]=arr_x[i]*r;
}
for(int i=idx+1;i<8;i++)
{
arr_x[i]=arr_x[i]/r;
}
}
else
{
arr_x[idx]=x2;
r=(float)x1/x2;
for(int i=0;i<=idx;i++)
{
arr_x[i]=arr_x[i]*r;
}
for(int i=idx+1;i<8;i++)
{
arr_x[i]=arr_x[i]/r;
}
【问题讨论】:
-
你已经做了什么?你目前的算法是什么?
-
@Alastair: 请在上面找到代码...
-
@Javed: C# 用于绘制图形和 C(dll) 计算坐标
-
通过paintEvent在C# Windows窗体中绘制图形?
-
no..using zedgraph...但我不知道如何重新计算坐标