Показать полное изображение с помощью 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 []
Другие вопросы по тегам