Роман М. писал(а):
По идее, если нужно снять снимок какого-то окна ББ, то это вроде делается средствами фреймворка.
Да, если нужен снимок окна, то есть стандартный модуль HostBitmaps для этого.
Вот так когда-то делал для сохранения графиков в BMP.
Код:
PROCEDURE SaveRastr*;
VAR res: INTEGER; bmp: Converters.Converter; path: Files.Locator; name: Files.Name;
c: Containers.Controller; v: Views.View;
BEGIN
c := Containers.Focus(); (* Берем контейнер, который находится в фокусе *)
IF c # NIL THEN (* Если какой-то контейнер был в фокусе, *)
v := c.ThisView() (* то берем отображение этого контейнера *)
path := Files.dir.This(""); (* Задаем путь куда сохранять *)
name := "Новый график"; (* название файла *)
bmp := Converters.list; (* зугружаем список доступных конвертеров *)
WHILE (bmp # NIL) & (bmp.fileType # "bmp") DO bmp := bmp.next END; (* идем по списку пока не найдем нужный *)
Views.Register(HostBitmaps.ViewToBitmap(v, 24), Views.ask, path, name, bmp, res) (* Сохраняем отображение с заданными выше параметрами *)
END
END SaveRastr;