#image #flutter #zooming #image-scaling
#изображение #flutter #масштабирование #масштабирование изображения
Вопрос:
В моем приложении у меня есть изображение, которое можно увеличивать или уменьшать. Я хочу разместить другой виджет поверх изображения и заставить их масштабироваться одновременно.
Идея в том, что на первом изображении есть окно. Я хочу разместить 2-е изображение в области окна.
Я получил масштабирование изображения, работающее со следующим кодом. Чего я не знаю, так это как разместить другой виджет в точной области внутри 1-го изображения.
_buildWindowImage() {
return Transform.scale(
scale: _imageScale,
alignment: Alignment.topCenter,
child: Image.asset(
'assets/images/background/window_1.png',
fit: BoxFit.contain,
),
);
}
Может кто-нибудь оказать некоторую помощь в этом.
Комментарии:
1. Вы можете использовать стек или даже контейнер и изображение в качестве декоратора, а затем в дочернем элементе контейнера добавить другое изображение.
2. используйте
CustomPainter
, где вы будете рисовать оба изображения3. Я могу использовать стек для размещения нового изображения поверх другого изображения. Но как мне настроить точное положение?
4. Есть ли другой вариант, кроме CustomPainter? В конечном итоге я хочу отобразить видео вместо 2-го изображения.
Ответ №1:
вы можете сделать
_buildWindowImage() {
return Transform.scale(
scale: _imageScale,
alignment: Alignment.topCenter,
child: Container(
decoration: BoxDecoration(
image: DecorationImage(
image: AssetImage(
'assets/images/background/window_1.png',
),
fit: BoxFit.contain,
),
),
child: Center(_put_another_widget_here),
),
);
}
}
Комментарии:
1. Я не хочу размещать 2-е изображение в центре. Мне нужен способ разместить его в точном месте.
2. тогда, возможно, вы можете использовать Stack, а затем наложить дочерние элементы друг на друга или использовать Positioned для установки координат.