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