处理视图缩放变小坐标问题

This commit is contained in:
1147192855@qq.com 2024-05-14 16:17:50 +08:00
parent b52c335c65
commit 6dca9d8f0e
1 changed files with 36 additions and 26 deletions

View File

@ -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));