DrawBoxToStream method (MapDoc)

Экспорт фрагмента карты, заданного прямоугольной областью в координатах местности, в виде растрового изображения (bmp, jpg, gif, png), в поток IStream.

Применяется к:

MapDoc

Синтаксис:

Visual Basic:

Function DrawBoxToStream(X1 As Double, Y1 As Double, X2 As Double, Y2 As Double, BkColor As Long, Transparent As Boolean, Width As Long, Height As Long, RasterType As Long, Stream As Unknown) As Boolean

X1, Y1, X2, Y2 - координаты прямоугольной области карты.

BkColor - цвет фона карты.

Transparent - признак прозрачности фона карты.

Width - ширина в пикселах.

Height - высота в пикселах.

RasterType - параметр, определяющий формат растрового файла:

0 - BMP,

1 - JPG,

2 - GIF,

4 - PNG,

Stream - COM-интерфейс IStream для записи изображения.

Описание:

Метод рисует то же, что и DrawBoxToRaster, только в поток: при одинаковых параметрах изображение, записанное в поток, побайтно совпадает с файлом, который пишет DrawBoxToRaster. Область так же вписывается в изображение края к краям.

В макросе на VBScript потоком служит ADODB.Stream, открытый в двоичном режиме; записанное в него изображение сохраняют в файл его методом SaveToFile.

В макросах на python метод недоступен: объект-поток создать нечем - ни win32com, ни comtypes в поставке нет.

Пример:

Пример получает изображение всей карты в поток и сохраняет его в файл.

Visual Basic:

Sub MapDoc_DrawBoxToStream
'Берем рабочую карту
Set Doc = Zulu.ActiveMapDoc
Set R = Doc.GetBoundsRectangle
'Двоичный поток для изображения
Set st = CreateObject("ADODB.Stream")
st.Type = 1
st.Open
'Вся карта, белый фон, 600 на 400 точек, формат 4 - PNG
If Doc.DrawBoxToStream(R.Xmin, R.Ymin, R.Xmax, R.Ymax, RGB(255, 255, 255), False, 600, 400, 4, st) Then
  S = "В потоке байт: " & st.Size
  st.SaveToFile "C:\Data\map.png", 2
  S = S & vbCrLf & "изображение сохранено в файл"
Else
  S = "Не удалось получить изображение"
End If
st.Close
MsgBox S
End Sub