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

В любом случае, когда приложение запускается, ничего не отображается (даже границы окна). Как я могу заставить его работать?


person Randomize    schedule 20.06.2015    source источник


Ответы (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 []
person Schoon    schedule 13.11.2015