LINUX.ORG.RU

История изменений

Исправление monk, (текущая версия) :

Можете ещё пояснить как правильно скейлить изображение на экране.

Я делал так:

        (define bm (send snip get-bitmap)) ;; источник
        (define width (send bm get-width))
        (define height (send bm get-height))
        (define (scale slider _2)
          (define s (/ (send slider get-value) 100))
          (define bdc (new bitmap-dc% [bitmap (make-bitmap (round (* s width)) (round (* s height)))]))
          (send bdc set-scale s s)
          (send bdc draw-bitmap bm 0 0)
          (send snip set-bitmap (send bdc get-bitmap))) ;; масштабированное

Само масштабирование в строке (send bdc set-scale s s).

высчитывать размеры дисплея, отмерять как туда влезает 3:4 изображение, рисовать его туда и т.д

Высчитывать в любом случае надо. Координаты, коэффициент. Автоматически только элементы интерфейса масштабируются.

Исходная версия monk, :

Можете ещё пояснить как правильно скейлить изображение на экране.

Я делал так:

        (define bm (send snip get-bitmap)) ;; источник
        (define width (send bm get-width))
        (define height (send bm get-height))
        (define (scale slider _2)
          (define s (/ (send slider get-value) 100))
          (define bdc (new bitmap-dc% [bitmap (make-bitmap (round (* s width)) (round (* s height)))]))
          (send bdc set-scale s s)
          (send bdc draw-bitmap bm 0 0)
          (send snip set-bitmap (send bdc get-bitmap))) ;; масштабированное

Само масштабирование в строке (send bdc set-scale s s).

высчитывать размеры дисплея, отмерять как туда влезает 3:4 изображение, рисовать его туда и т.д

Высчитывать в любом случае надо. Координаты, коэффициент. Автоматически только элементы интерфейса масштабируются.