swamp_agr (swamp_agr) wrote,
swamp_agr
swamp_agr

Экспорт изображений из wxHaskell/wxWidgets в файл

Зашёл в тупик, во время разборок с печатью. Пришлось вернуться к прошлому сценарию, а именно к выгрузке сгенерированного программно изображения в какой-нибудь файл. Сойдёт что угодно: BMP, PNG, JPG, TIFF, SVG...

В теории ожидалось увидеть подобную реализацию.
Frame () -> Bitmap, Bitmap -> Image, Image -> File


На практике всегда бывает не так, как в теории. Началось с того, что документация говорила о чём-угодно, но не о выгрузке в файл. Например, о тысячах способов чтения картинки из файла, но вот сама выгрузка в файл отображена мимоходом в недрах wx-core: раз, два. Ну а поскольку Bitmap всё-таки преобразовывается в Image и обратно, то задача сохранения файла сводится к выгрузке данных DC (Device Context, с помощью которого можно вообще что-то рисовать и отображать нарисованное в панелях на фреймах). Поиск в сети по этой теме показал, что получается более-менее один способ корректно сохранить данные в wxWidgets:
1. создать DC
2. отрисовать на нём изображение
3. объявить и проиницаилизировать Bitmap
4. объявить wxMemDC
5. указать, чтобы рисование через него шло на Bitmap
6. отрисовать изображение ещё раз через wxMemDC
7. освободить wxMemDC для возможности записи в файл
8. Положить Bitmap в файл на диск.

Ух ты! Круто! Только вот с DC в wxHaskell туговато. Дальнейший поиск вариантов показал на испанский пример просмотровщика GIS-слоёв. Посмотрим, что из этого выйдет...
Tags: gui, haskell, wxwidgets
Subscribe
  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments