关于TChart缩放的问题

wpaeng 2007-04-23 10:53:12

我现在想在TChart中实现局部放大的功能,具体如下:
点击TChart图中的某一点,图以该点为中心放大(即放大前鼠标所在点在放大后位置不变),比例暂定为120%

不知道我说清楚了没有,其实我只想能做的像一些地图软件中的缩放功能一样
...全文
1186 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
wpaeng 2007-04-25
  • 打赏
  • 举报
回复
double tmpX, tmpY;
double IncreasePercent = 0.5;

void __fastcall TForm1::Chart1Click(TObject *Sender)
{
if (tmpX > 0 & tmpY > 0)
{
double OldXMin = Chart1->BottomAxis->Minimum;
double OldXMax = Chart1->BottomAxis->Maximum;
double NewXMin = (tmpX * IncreasePercent + OldXMin) / (1 + IncreasePercent);
double NewXMax = (tmpX * IncreasePercent + OldXMax) / (1 + IncreasePercent);
Chart1->BottomAxis->SetMinMax(NewXMin, NewXMax);
}
}
//---------------------------------------------------------------------------

void __fastcall TForm1::Chart1MouseMove(TObject *Sender, TShiftState Shift,
int X, int Y)
{
Series1->GetCursorValues(tmpX,tmpY); // <-- get values under mouse cursor
}
//---------------------------------------------------------------------------

以上是我具体实现的代码,这里只是实现X轴的ZoomIn(比例为150%),Y轴的同理,
rainv 2007-04-25
  • 打赏
  • 举报
回复
mark一下以后看
wpaeng 2007-04-24
  • 打赏
  • 举报
回复
ok,已经搞定了
wpaeng 2007-04-24
  • 打赏
  • 举报
回复
楼上说的和我想的差不多,鼠标点击时的xy坐标可以找到,关键的问题在于:怎样重设XY轴的大小可以实现 :
点击TChart图中的某一点,图以该点为中心放大(即放大前鼠标所在点在放大后位置不变)
勉励前行 2007-04-23
  • 打赏
  • 举报
回复
用.ZoomPercent 配合設定 X軸 Y軸 座標才能實現。

Chart1.ZoomPercent( 125 ); // Zoom IN 125%
然後找到點擊時的xy坐標,重設 XY軸大小即可。
void ScrollAxis(TChartAxis* Axis, const double Percent)
{
double Amount = -((Axis->Maximum-Axis->Minimum)/(100.0/Percent));
Axis->SetMinMax(Axis->Minimum-Amount,Axis->Maximum - Amount);
}
wpaeng 2007-04-23
  • 打赏
  • 举报
回复
用ZoomPercent确实可以实现缩放,但它是以原图的中心为新图的中心
我想要实现的是:
点击TChart图中的某一点,图以该点为中心放大(即放大前鼠标所在点在放大后位置不变),
比例暂定为120%
constantine 2007-04-23
  • 打赏
  • 举报
回复
Chart1.AnimatedZoom:=True;
Chart1.ZoomPercent( 125 ); { Zoom IN 125% }
Chart1.ZoomPercent( 75 ); { Zoom OUT 75% }
constantine 2007-04-23
  • 打赏
  • 举报
回复
好像用 ZoomPercent就可以
wpaeng 2007-04-23
  • 打赏
  • 举报
回复
确实有拖动放大,但我觉得很不方便,不知道能不能做成像我的要求那样放大呢?
jaffy 2007-04-23
  • 打赏
  • 举报
回复
TChart自己有放大的功能,不过不是点击事件,好象是鼠标的拖动事件

604

社区成员

发帖
与我相关
我的任务
社区描述
C++ Builder VCL组件使用和开发
社区管理员
  • VCL组件使用和开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧