В дополнение к принятому (правильному и лучшему) ответу стоит знать, как перейти от «изображения» к его imageDocument. Вы делаете это, как в этом примере:
ClearResults()
image frontImg := GetFrontImage()
imageDocument frontDoc = GetFrontImageDocument()
Result( "Grapped from application:" )
Result( "\n\t Image: " + frontImg.ImageGetLabel() + "\t ID = " + frontImg.ImageGetID() )
Result( "\n\t Doc : " + frontDoc.ImageDocumentGetName() + "\t ID = " + frontDoc.ImageDocumentGetID() )
imageDocument docFromImg = frontImg.ImageGetOrCreateImageDocument()
Result( "\n Taken from image:" )
Result( "\n\t Doc : " + frontDoc.ImageDocumentGetName() + "\t ID = " + docFromImg.ImageDocumentGetID() )
image imgFromDoc := frontDoc.ImageDocumentGetImage( 0 )
Result( "\n Taken from imageDocument:" )
Result( "\n\t Image: " + frontImg.ImageGetLabel() + "\t ID = " + imgFromDoc.ImageGetID() )
Обратите внимание, что изображение не обязательно имеет imageDocument. ImageDocument создается только при отображении или сохранении изображения. Вот почему команда называется ...GetOrCreate
.
Точно так же imageDocument может содержать несколько изображений (или ни одного).
Все это немного запутано и кажется запутанным, потому что многие «правильные» команды, следующие за внутренней иерархией классов, для удобства написания сценариев обернуты командами упрощения.
например Сохранение изображения с помощью SaveSave()
требует переменной image
, но на самом деле нужно сохранить imageDocument
. Таким образом, он неявно получает/создает его. В противном случае пользователю нужно будет написать правильный, но более «сложный» сценарий.
Вместо:
string path = "C:\\test.dm4"
image img := GetFrontImage()
img.SaveImage( path )
Потребуется:
string path = "C:\\test.dm4"
string handler = "Gatan Format"
image img := GetFrontImage()
imageDocument doc = img.ImageGetOrCreateImageDocument()
doc.ImageDocumentSaveToFile( handler, path )
Также обратите внимание: хотя путь использования imageDocuments является правильным, вы должны знать, что «дисплеи linePlot» действительно особенные. Это объекты imageDisplay, которые могут содержать более одного изображения, тогда как imageDocuments — это объекты, которые могут содержать более одного imageDisplay. Я указываю на это, чтобы вы знали, что вам нужно добавить новые изображения в imageDisplay, чтобы получить больше фрагментов в изображении фрагмента. Если вы добавите их в imageDocument, вы получите несколько отображений linePlot в одном файле.
В зависимости от того, насколько «глубоко» вам нужно все это знать, я бы порекомендовал прочитать раздел документации «image/imageDocument/imageDisplay/components» и немного протестировать. Если остались вопросы, опубликуйте их здесь, в StackOverflow :c)
person
BmyGuest
schedule
28.04.2017