Load emf

0 голосов
спросил 07 Фев, 06 от Гость (210,080 баллов) в категории Программные продукты Esri
Здравствуйте! Не подскажете, как загрузить *.emf в layout?
Я создаю pPictureElement, затем
pPictureElement.ImportPictureFromFile затем
pElement = pPictureElement
Но я не знаю, как в этом случае задать геометрию pElement, а при попытке добавить pElement в GraphicsContainer происходит ошибка. Не подскажете, в чем я не прав?

8 Ответы

0 голосов
ответил 08 Фев, 06 от Alexander1 (32,520 баллов)

Замени JpgPictureelement на EmfPictureelement и определи какой экстент нужен для Envelope:

http://forums.esri.com/Thread.asp?c=93&f=992&t=70583 &mc=8#190659

0 голосов
ответил 15 Фев, 06 от Гость (210,080 баллов)
Спасибо большое, я разобрался в чем была ошибка. Но возникает вопрос: если задать Envelope не правильно, то токда emf сожмется или растянется под размер Envelope. А возможно ли задавать только одни координаты, чтобы emf выкладывался как в аркгисе ? (Собственно, в этом и была ошибка - я пытался задать Envelope одной парой координат)   
0 голосов
ответил 15 Фев, 06 от Alexander1 (32,520 баллов)

...А возможно ли задавать только одни координаты, чтобы emf выкладывался как в аркгисе ? ...  

Это как? Можно поподробнее?

0 голосов
ответил 20 Фев, 06 от Гость (210,080 баллов)
В аркгис, при выборе меню Insert -> Picture -> Windows Enhanced Metafile и выборе необходимого файла, картинка помещается в Layout в своем оригинальном размере. Видимо, правильнее задать вопрос так: а как определить envelope, чтобы картинка не искажалась?
0 голосов
ответил 20 Фев, 06 от Гость (210,080 баллов)
Спасибо, я нашел ошибку. Если задать интерфейс не iPictureElement, a iPictureElement2, можно получить доступ к параметрам определения размеров emf, дальше эти размеры нужно подставить в envelope.
0 голосов
ответил 28 Фев, 06 от Гость (210,080 баллов)
Еще вопрос про экспорт/импорт emf. При экспорте мы имеем дело с четырьмя рамками (exportRECT исходного лейаута, exportRECT результирующего файла, exportEnvelope и visibleEnvelope). Где можно посмотреть, как они взаимодействуют и для чего предназначены? Процедура экспорта в емф у меня получается, но, к сожалению, только экспериментальным образом - я не могу понять, почему,  если я меняю какие-либо параметры envelope или exportRECT, процедура не работает (либо сохраняется пустой емф, либо слишком большой, либо слишком маленький).
0 голосов
ответил 28 Фев, 06 от Alexander1 (32,520 баллов)
Код в студию! image
0 голосов
ответил 28 Фев, 06 от Гость (210,080 баллов)
Sub Export_Legend2EMF()

Dim pMxDoc As IMxDocument
Dim pActiveView As IActiveView
Dim pExport As IExport
Dim pPixelEnvelope As IEnvelope
Dim exportRECT As tagRECT
Dim iScreenResolution As Integer
Dim hDC As Long

Set pMxDoc = ThisDocument
Set pActiveView = pMxDoc.ActiveView
Set pExport = New ExportEMF

pExport.ExportFileName = "c:\exporttest10.emf"
iScreenResolution = 96
pExport.Resolution = iScreenResolution

exportRECT = pActiveView.ExportFrame

Set pPixelEnvelope = New Envelope
pPixelEnvelope.PutCoords exportRECT.Left, exportRECT.Top, exportRECT.Right, exportRECT.bottom

pExport.PixelBounds = pPixelEnvelope

hDC = pExport.StartExporting

Dim visibleEnvelope As IEnvelope
Set visibleEnvelope = New Envelope
visibleEnvelope.PutCoords 10, 10, 20, 20

pActiveView.Output hDC, pExport.Resolution, exportRECT, visibleEnvelope, Nothing
pExport.FinishExporting
pExport.Cleanup

End Sub


В этом случае получается, что кусочек лейаута размером 10х10 (visibleEnvelope) сохраняется в emf с размером всего лейаута. Очевидно, что кусочек лейаута 10х10 должен сохранятся как емф 10х10 (см).
Добро пожаловать на сайт Вопросов и Ответов, где вы можете задавать вопросы по GIS тематике и получать ответы от других членов сообщества.
...