FMX的ImageViewer控件,如何可以按住鼠标拖动图片?只能用滚动条来显示大图片的不同区域吗? FMX的ImageViewer控件,如何可以按住鼠标拖动图片?只能用滚动条来显示大图片的不同区域吗? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 fmx控件在渲染前, 会乘以一个变换矩阵,用来实现缩放,旋转,移动等操作,对应sacle, rotate, translate等属性。所以我想在鼠标事件里,改变一下translate属性,或者直接设置这个变换矩阵,就可以实现随鼠标移动了。 只需要在鼠标移动时调用ImageViewer的ScrollBy方法 float px,py;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::ImageViewer1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y){ px=X; py=Y;}//---------------------------------------------------------------------------void __fastcall TForm1::ImageViewer1MouseMove(TObject *Sender, TShiftState Shift, float X, float Y){ if(Shift.Contains(ssLeft)) ImageViewer1->ScrollBy(X-px,Y-py);}//---------------------------------------------------------------------------ScrollBy滚动的太灵敏了,我希望的是移动图片(X-px,Y-py)像素,有没有方法?如果ScrollBy时参数乘于一个系数,系数不好计算,因为图片大小不一样。 float px,py;//---------------------------------------------------------------------------__fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner){}//---------------------------------------------------------------------------void __fastcall TForm1::ImageViewer1MouseDown(TObject *Sender, TMouseButton Button, TShiftState Shift, float X, float Y){ px=X; py=Y;}//---------------------------------------------------------------------------void __fastcall TForm1::ImageViewer1MouseMove(TObject *Sender, TShiftState Shift, float X, float Y){ if(Shift.Contains(ssLeft)) ImageViewer1->ScrollBy(X-px,Y-py);}//---------------------------------------------------------------------------ScrollBy滚动的太灵敏了,我希望的是移动图片(X-px,Y-py)像素,有没有方法?如果ScrollBy时参数乘于一个系数,系数不好计算,因为图片大小不一样。ScrollBy没法精确地控制移动,比如移动时在图片某区域停止。 delphi中messagebox 和showmessagepos的结合??求助 控制多个panel显示问题 再散分,感谢csdn,感谢Borland,感谢微软 奇怪错误 线程同步问题. 为一个广告公司做个软件不知道日期怎么实现? 我的应用程序被windows自动关闭? 菜鸟问题,开方如何表示? 请教API高手!!! (关于使窗体的关闭按钮置灰) Oracle + SQLConnection + SQLClientDataSet + DataSetProvider + ClientDataSet 无法保存,高分求助,从不欠账! 数据库录入和处理问题 求Windows10旗舰版操作系统。
float px,py;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageViewer1MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, float X, float Y)
{
px=X;
py=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageViewer1MouseMove(TObject *Sender, TShiftState Shift,
float X, float Y)
{
if(Shift.Contains(ssLeft))
ImageViewer1->ScrollBy(X-px,Y-py);
}
//---------------------------------------------------------------------------ScrollBy滚动的太灵敏了,我希望的是移动图片(X-px,Y-py)像素,有没有方法?
如果ScrollBy时参数乘于一个系数,系数不好计算,因为图片大小不一样。
float px,py;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageViewer1MouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, float X, float Y)
{
px=X;
py=Y;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::ImageViewer1MouseMove(TObject *Sender, TShiftState Shift,
float X, float Y)
{
if(Shift.Contains(ssLeft))
ImageViewer1->ScrollBy(X-px,Y-py);
}
//---------------------------------------------------------------------------ScrollBy滚动的太灵敏了,我希望的是移动图片(X-px,Y-py)像素,有没有方法?
如果ScrollBy时参数乘于一个系数,系数不好计算,因为图片大小不一样。ScrollBy没法精确地控制移动,比如移动时在图片某区域停止。