Существует третий способ решения. Прекратите использовать Scrollbox и напишите свой собственный элемент управления с его собственными ручками полосы прокрутки, которые могут отображать часть изображения в координатах X, Y, указанных вами. Фактически вы могли бы сделать это, добавив полосы прокрутки к любому простому компоненту на основе TControl, написанному вами; если вы настаиваете на использовании встроенного элемента управления в Delphi, вы на самом деле будете делать что-то слегка нелепое. Написание собственного элемента управления может быть сделано в несколько строк кода, и это правильный ответ, если вы не хотите использовать сторонние элементы управления.
Вторая альтернатива, а на самом деле решение, которое выберут 99% разработчиков Delphi, - это переключение на сторонний элемент управления для просмотра изображений, который уже обладает этой функциональностью. Очевидно, нет смысла изобретать велосипед. Похоже, ваш вопрос предусматривает, что вы не можете добавить сторонний контроль.
Scrollboxes + TImage - ужасное решение с точки зрения производительности, особенно когда вы должны загрузить огромное изображение целиком в память GDI, чтобы содержать изображение. Я удивлен, что изображение размером 32K-пикселя с высотой 1000+ пикселя может даже загружаться в память без серьезных проблем. Ваша текущая идея не только ограничена ограничениями Scrollbox (хорошо объясненными другим человеком, который ответил на этот вопрос), но и возможностями GDI по обработке изображений, которые (для очень больших изображений) не совсем идеальны.
Нравится вам это или нет, либо напишите свое, либо используйте просмотрщик изображений для delphi . На связанной странице визуализатор изображений для Delphi v.1.00.00 от Ahmoy Law выглядит хорошо для меня.