Показать полное изображение с помощью wxHaskell
Я использую wxHaskell для отображения полного изображения в окне. Мой код:
import Graphics.UI.WX
import Graphics.UI.WXCore
main :: IO ()
main = start testimg
testimg :: IO ()
testimg = do
f <- frame [text := "Test Image"]
p <- panel f []
image <- bitmapCreateFromFile "landscape.png"
imagep <- panel p [ on paint := onPaint image ]
set f [ layout:= fill $ container p $ widget imagep ]
where
onPaint image dc rect = drawBitmap dc image pointZero True []
В любом случае, когда приложение работает, ничего не отображается (даже границы окна). Как я могу заставить это работать?
1 ответ
Вы пропустили fill
до widget imagep
с тем эффектом, что панель, которую вы рисуете на картинке, не получает никакой поверхности. И я бы рекомендовал установить externalSize тоже. Вы также можете захотеть взглянуть на https://github.com/wxHaskell/wxHaskell/blob/master/samples/wx/ImageViewer.hs для вдохновения. Удачи!
import Graphics.UI.WX
import Graphics.UI.WXCore
main :: IO ()
main = start testimg
testimg :: IO ()
testimg = do
f <- frame [text := "Test Image"]
p <- panel f []
image <- bitmapCreateFromFile "landscape.png"
imagep <- panel p [ on paint := onPaint image ]
set f [ layout:= fill $ container p $ fill $ widget imagep
, outerSize := sz 500 500
]
where
onPaint image dc rect = drawBitmap dc image pointZero True []