В настоящее время я работаю над приложением, для которого необходимо отображать большие технические чертежи, которые могут быть размером 8800x6800 или более. Требования гласят, что пользователь должен иметь возможность панорамирования и масштабирования изображения. В идеале, они хотели бы иметь возможность комментировать изображения. Если вы посмотрите на Windows Photo Viewer, вы увидите производительность и функции, которые я собираюсь эмулировать, за исключением части аннотации.
До сих пор я пробовал пару разных подходов к отображению изображений, и ни один из них, похоже, не обеспечивает такую производительность, которую я ищу. Либо они занимают много памяти, либо они работают медленно. Вот подходы, которые я выбрал:
Viewbox
с Image
в детстве. Использование памяти в порядке, но изменение размера Viewbox
происходит медленно. Из-за этого я еще не пробовал масштабировать / панорамировать с этим подходом.
InkCanvas
с Image
, установленным в качестве фона или дочернего элемента. При таком подходе масштабирование / панорамирование с помощью ScaleTransform
и TranslateTransform
выглядело так, но использование памяти могло быть выше в диапазоне 450-600 МБ.
Это мой первый опыт работы с изображениями в .NET / WPF, и мои знания по этому вопросу довольно ограничены. Каковы некоторые рекомендации по работе с большими изображениями, особенно с WPF? Я читал, что мозаичное изображение (например, глубокий зум) может помочь, но не знал, как это сделать, или это лучшая идея в моей ситуации. Знаете ли вы какие-либо ресурсы, которые могли бы помочь мне лучше понять это?