gpt4 book ai didi

haskell - 使用 wxhaskell 绘制缩放位图

转载 作者:行者123 更新时间:2023-12-04 21:23:49 25 4
gpt4 key购买 nike

imageviewer example显示如何在 ScrolledWindow 中显示图像。

如果我想在可用空间中显示图像,根据需要缩放位图怎么办?

我的 google-fu 在这方面让我失望了。

编辑:我以为我和 scrolledWindowSetScale 有关系,但看起来它在这里无济于事。

最佳答案

有些人向我指出了 wxCore 中的函数,所以我可以找到一个有效的解决方案。

原始示例中进行绘图的函数是:

onPaint vbitmap dc viewArea
= do mbBitmap <- get vbitmap value
case mbBitmap of
Nothing -> return ()
Just bm -> drawBitmap dc bm pointZero False []

使用 dcSetUserScale从 wxCore,我能够修改它以这种方式扩展:

( sw 是滚动窗口)
onPaint sw img dc viewArea = do
mimg <- get img value
case mimg of
Nothing -> return ()
Just bm -> do
bsize <- get bm size
vsize <- get sw size
let scale = calcScale bsize vsize
dcSetUserScale dc scale scale
drawBitmap dc bm pointZero False []

calcScale :: Size -> Size -> Double
calcScale (Size bw bh) (Size vw vh) = min scalew scaleh
where scalew = fromIntegral vw / fromIntegral bw
scaleh = fromIntegral vh / fromIntegral bh

关于haskell - 使用 wxhaskell 绘制缩放位图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7270956/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com