Создает изображение образца стиля линии с заданными параметрами и записывает его в поток.
Visual Basic:
Function DrawSampleImage(Stream As IUnknown, Width As Long, Height As Long, SpaceX As Long, SpaceY As Long, Format As Long, ImageBkColor As Long, ImageTransparent As Boolean, Scale As Double, LineColor As Long, LineWidth As Double) As Boolean
Stream - поток для записи результата с изображением.
Width - ширина рисунка.
Height - высота рисунка.
SpaceX - поля по вертикали.
SpaceY - поля по горизонтали.
Format - формат растрового изображения.
ImageBkColor - цвет фона изображения.
ImageTransparent - признак прозрачности изображения.
Scale - масштабный коэффициент изображения.
LineColor - цвет линии.
LineWidth - толщина линии.
Метод возвращает True, если изображение создано, и False в противном случае.
Параметр Format может принимать одно из возможных значений:
0
Bitmap Picture (BMP)
1
Joint Photographic Experts Group (JPEG)
2
Graphics Interchange Format (GIF)
3
Tagged Image File Format (TIFF)
4
Portable Network Graphics (PNG)
В макросе на VBScript потоком служит ADODB.Stream, открытый в двоичном режиме.
В макросах на python метод недоступен: объект-поток создать нечем - ни win32com, ни comtypes в поставке нет.
Пример сохраняет образец стиля линии в файл PNG.
Visual Basic:
Sub LineStyleDef_DrawSampleImage 'Берем активный слой карты Set L = Zulu.ActiveMapDoc.Layers.Active 'Стиль линии, образец которого нужен Set lsd = L.LineStyles.ItemById(4) 'Двоичный поток, куда будет записано изображение Set st = CreateObject("ADODB.Stream") st.Type = 1 st.Open 'Образец 120x40 с полями 2, формат 4 - PNG, фон белый, линия красная If lsd.DrawSampleImage(st, 120, 40, 2, 2, 4, 16777215, False, 1.0, RGB(255, 0, 0), 1.0) Then 'Путь укажите свой st.SaveToFile "C:\Data\linesample.png", 2 MsgBox "Записано байт: " & st.Size Else MsgBox "Не удалось создать изображение" End If End Sub