Я создаю программу редактирования изображений в GTK \ C, и я не могу понять, как сделать работу масштабирования; Мне нужно увеличить масштаб моего холста на Каире до положения курсора мыши, но Каир только увеличивает масштаб изображения, которое он отображает. Обычный способ обойти это - преобразовать, масштабировать, а затем преобразовать обратно; но это мешает прокрутки, окружающие мой холст.Масштабирование в позиции мыши без испорчения полос прокрутки?
Моя идея состояла в том, чтобы сдвинуть полосы прокрутки назад, чтобы компенсировать движение, вызванное масштабированием. Перемещение полос прокрутки на mouse_position * (new_zoom - old_zoom)
должно работать, но это не так; он под-корректирует при низких уровнях масштабирования, затем перенаправляет на высоких уровнях.
Как правильно масштабировать?
Мой код виден здесь, если это помогает: ScreenSnap on Github
Да? Если я заменю эту строку, тогда self-> zoom_point_x не будет иметь никаких данных, и мне нужно это для строки shift_x =. Вы хотите заменить линию под ней? – snostorm
Извините, я скопировал и вставил неправильную линию !! Посмотрите сейчас. – dave
Хм ... это, похоже, не работает. В настоящее время он постоянно недооценивается на большую сумму. – snostorm