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没法精确地控制移动,比如移动时在图片某区域停止。 庆祝阿三生日放分 Treeview 节点问题 怎样用ADO组件将数据导入到文本文件? 关于图像算法和MOVE函数问题???????????????????????????? 操作注册表的简单问题 如何实现VOC或者WAV文件的波形图? 调用outlook出错 请问什么地方有32*32的好看的图标下载? Msde 本地数据库paradox中关于时间比较的问题 数据库录入和处理问题 求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没法精确地控制移动,比如移动时在图片某区域停止。