处理视图缩放变小坐标问题
This commit is contained in:
parent
b52c335c65
commit
6dca9d8f0e
|
|
@ -292,7 +292,7 @@ class PictureOverviewState extends ConsumerState<PictureOverview> with CommonMix
|
|||
markingUserId: widget.markingUserId,
|
||||
);
|
||||
zoomInfo = info;
|
||||
if (double.parse(zoom.toStringAsFixed(2)) <= 1) zoom = 1;
|
||||
// if (double.parse(zoom.toStringAsFixed(2)) <= 1) zoom = 1;
|
||||
if (imagInfoModel != null) {
|
||||
// 根据缩放比例重置被放大的图片的尺寸
|
||||
imagInfoModel = TestQuestionsImageInfo(
|
||||
|
|
@ -374,41 +374,51 @@ class PictureOverviewState extends ConsumerState<PictureOverview> with CommonMix
|
|||
globalPosition = details.localPosition;
|
||||
Offset localPosition = globalPosition!;
|
||||
|
||||
if (imagInfoModel != null &&
|
||||
(localPosition.dy < imagInfoModel!.imageHeightOffsetStart! || localPosition.dy > imagInfoModel!.imageHeightOffsetend!)) {
|
||||
// 笔迹画出图片区域 直接断笔
|
||||
var dataVal = ref.read(drawMarkingProvider).data;
|
||||
if (dataVal.length - 1 > -1 && dataVal[dataVal.length - 1].data != null) {
|
||||
var newVal = ref.read(drawMarkingProvider).data..add(GestureRecording(eraser: graffitiSwitch.openEraser));
|
||||
var newVal1 = ref.read(drawMarkingProvider).offsets..add(null);
|
||||
ref.read(drawMarkingProvider.notifier).setState(DrawMarkingVal(newVal, newVal1));
|
||||
}
|
||||
illegalArea = true;
|
||||
return;
|
||||
}
|
||||
illegalArea = false;
|
||||
// if (imagInfoModel != null &&
|
||||
// (localPosition.dy < imagInfoModel!.imageHeightOffsetStart! || localPosition.dy > imagInfoModel!.imageHeightOffsetend!)) {
|
||||
// // 笔迹画出图片区域 直接断笔
|
||||
// var dataVal = ref.read(drawMarkingProvider).data;
|
||||
// if (dataVal.length - 1 > -1 && dataVal[dataVal.length - 1].data != null) {
|
||||
// var newVal = ref.read(drawMarkingProvider).data..add(GestureRecording(eraser: graffitiSwitch.openEraser));
|
||||
// var newVal1 = ref.read(drawMarkingProvider).offsets..add(null);
|
||||
// ref.read(drawMarkingProvider.notifier).setState(DrawMarkingVal(newVal, newVal1));
|
||||
// }
|
||||
// illegalArea = true;
|
||||
// return;
|
||||
// }
|
||||
// illegalArea = false;
|
||||
|
||||
var _theKey = _zoomKey.currentState;
|
||||
print(_theKey);
|
||||
|
||||
double remainingHeight = imagInfoModel!.imageHeightOffsetStart!; // 剩余高度
|
||||
if (remainingHeight > 1) {
|
||||
localPosition = Offset(localPosition.dx, localPosition.dy - remainingHeight);
|
||||
|
||||
// if (zoomOffset != null) {
|
||||
// // var density = (imagInfoModel!.boxWidth / imagInfoModel!.scaleWidth!);
|
||||
// localPosition = Offset(localPosition.dx/, localPosition.dy);
|
||||
// }
|
||||
} else {
|
||||
if (zoomOffset != null) {
|
||||
localPosition = Offset(localPosition.dx, localPosition.dy + zoomOffset!.dy.abs());
|
||||
}
|
||||
}
|
||||
|
||||
if (imagInfoModel?.zoom != null && imagInfoModel?.zoom != 1) {
|
||||
// print(localPosition.dy);
|
||||
print(localPosition.dx);
|
||||
|
||||
double _theZoomVal = imagInfoModel?.zoom ?? 1;
|
||||
var _dx = zoomOffset?.dx ?? 0;
|
||||
_dx = _dx > 0 ? 0 : _dx.abs() / _theZoomVal;
|
||||
var _dy = zoomOffset?.dy ?? 0;
|
||||
_dy = _dy > 0 ? 0 : _dy.abs() / _theZoomVal;
|
||||
|
||||
if (_theZoomVal > 1) {
|
||||
// 计算视图被放大比例 还原笔迹坐标
|
||||
localPosition = Offset(localPosition.dx / imagInfoModel!.zoom, localPosition.dy / imagInfoModel!.zoom);
|
||||
localPosition = Offset(localPosition.dx / _theZoomVal, localPosition.dy / _theZoomVal);
|
||||
if (zoomOffset != null) {
|
||||
// 如果滚动条有触动就加上滚动条滚动的位置
|
||||
localPosition = Offset(localPosition.dx + zoomOffset!.dx.abs() / imagInfoModel!.zoom, localPosition.dy);
|
||||
localPosition = Offset(localPosition.dx + _dx, localPosition.dy + _dy);
|
||||
}
|
||||
} else if (_theZoomVal < 1) {
|
||||
// 试图被缩小
|
||||
double imgSpaceWidthOfSingle = (imagInfoModel!.boxWidth - imagInfoModel!.scaleWidth!) / 2;
|
||||
localPosition = Offset((localPosition.dx - imgSpaceWidthOfSingle) / _theZoomVal, localPosition.dy / _theZoomVal + _dy);
|
||||
// localPosition = Offset(localPosition.dx * _theZoomVal - imgSpaceWidthOfSingle, localPosition.dy / _theZoomVal);
|
||||
} else {
|
||||
localPosition = Offset(localPosition.dx, localPosition.dy + _dy);
|
||||
}
|
||||
|
||||
var newVal = ref.read(drawMarkingProvider).data..add(GestureRecording(eraser: graffitiSwitch.openEraser, data: localPosition));
|
||||
|
|
|
|||
Loading…
Reference in New Issue