DicomObjects Reference
In This Topic
    Project Overview
    In This Topic

    This package consists of an inter-related, but independent, set of “Objects” that enable developers quickly and easily to add DICOM functionality to their products without needing to understand or program the intricacies of the DICOM standard.
    This help file provides full reference
    Almost any aspect of DICOM image/data manipulation can be performed using DicomObjects, including:

    •  Image display and manipulation
    •  Network transmission of images and associated data, including worklists
    •  Printing to DICOM and windows printers
    •  Normalised operations including storage commitment
    •  Image creation from scratch and import/export to/from non-DICOM formats

     The main Components of the DicomObjects Collection are:

    DicomViewer Custom Control

    A 32-bit ActiveX control that may be embedded into any suitable control container such as Visual Basic, standard development environments such as C++ (Microsoft or Borland), Delphi, Microsoft Access, and can even be used in Internet Explorer. I t has extensive display capabilities for DICOM images, whether read from files, received over the network, or from numerous other sources, and these include a wide range of annotations, and full DICOM greyscale presentation state support.

    It also provides service class provider (SCP) functionality for verification, storage, query/retrieve and normalised operations.

    DicomServer Object

    An automation object without a user interface that provides storage, query/retrieve and normalised facilities as a service class provider (SCP).

    DicomQuery Object

    A non-visual automation object that handles the query/retrieve parts of the DICOM standard as a service class user (SCU). 

    DicomPrint Object

    An automation object that simplifies DICOM printing as a service class user (SCU). 

    DicomGlobal Object

    Used for certain global operations such as over-riding registry values 

    DicomConnection Object

    A DicomConnection Object represents an association, and may either be created automatically in response to an incoming query request, or explicitly by the client program.  Methods of this object are used to send data, images, and verification requests, and this object is central to DicomObject’s asynchronous operation capabilities. As of version 4.1, there is also a DicomConnections collection.

    Other dependent automation objects and collections are created and used by the above, and some may also be created directly.  They are: 

    Object Description  Single Item  Collection
    SOP instance, containing an image  DicomImage  DicomImages
    Generic SOP instance, used for results of DICOM queries or as a sub-element of a Sequence  DicomDataSet DicomDataSets
    Attribute (Data Element) of either of the above  DicomAttribute  DicomAttributes
    DICOM Presentation context   DicomContext  DicomContexts
    Image Annotation   DicomLabel  DicomLabels

    Class ModuleDescription

    In order to improve code reliability, and as a service to programmers, DicomObjects includes constants for some of the commonly used DICOM well-known UIDs, which are listed here, by category.  Note that the import procedures for some languages (including Microsoft Visual C++) do not include string constants.  If you wish to use these constants in such environments, then you are advised to copy this list from the help file into a header file, and edit to suit the requirements of your language.

    Each DicomAttribute corresponds to one data element within a DICOM Data Set or Image
    This is a collection of DicomAttribute objects, including that represented by a DicomImage’s or DicomDataSet’s Attributes Property.

    A DicomConnection Object represents the current state of an association, and may either be created automatically in response to an incoming query request, or explicitly by the client program.  Methods of this object are used to send data, images, and verification requests.  There is not a one-to-one correspondence between DicomConnections and associations, as one incoming association may cause several DicomConnection objects to be produced, one in response to each incoming command, and likewise, an outgoing DicomConnection object may (if synchronous) during its life serve more than one association, but at a given time, each association is represented by one, and only one DicomConnection.

    As most clients in which DicomObjects will be used are single-threaded, the DicomConnection object is structured so as to allow asynchronous operation, permitting multiple operations to be performed simultaneously. For incoming C-FIND, C-GET or C-MOVE requests, details of the request are found in the OperationRoot and Request properties.  The client then finds the data and/or images required, and returns them through one or more SetDestinationSendData and SendImages methods.  The SendStatus method is used both to return pending status messages for C-GET and C-MOVE operations, and the final status for all operations.

    For incoming Normalised operations, details of the request are less “interpreted”, as handling such commands as an SCP is an advanced technique for knowledgeable users only.  The main incoming command is found, as a DicomDataSet, in the Command property, and the associated identifier is, as for the composite operations, in Request.

    DicomConnection objects may be created under user control either directly (e.g. using Visual Basic’s ‘new’ command, or using the OLE name DicomObjects.DicomConnection) or via the New method of DicomViewer or DicomServer objects.  The method used for creation controls the allowable values for the Mode property.  When created directly, the Mode is always doSync, and cannot be modified, as there would be no mechanism for ActionComplete events to be fired in these circumstances.  When created via the DicomViewer or DicomServer objects, then Mode is initially doAsync, but this may be modified before the first operation is initiated.  In this case, if Mode is left as doSync, or changed to doAsync, then the object through which the DicomConnection is created receives the ActionComplete events.  The Close method should be applied to such all user created DicomConnection objects before allowing them to be destroyed.

    See the Mode property for details of synchronising options.

    This is a true OLE collection, a consisting of DicomConnection objects.
    A DicomContext represents a DICOM presentation context, and is used in association negotiation, and in the selection of transmission formats (transfer syntaxes).  DicomContext items only exist within a DicomContexts collection, and more information on the use of DicomContext items may be found in the DicomContexts entry.

    A DicomContexts collection consists of DicomContext objects, and represents the set of DICOM presentation contexts offered or accepted for an association negotiation.

    Most applications will not need to use this collection, as appropriate defaults are provided in most circumstances, and even these may be modified via registry entries, but this collection may prove useful where it is necessary to use different presentation contexts (giving different transfer syntaxes) for different remote entities, such as in teleradiology.  When used on incoming connections, it can also be very useful for debugging purposes.

    A DicomDataSet represents a series of Data Elements, and some associated properties. 

    This is a true OLE collection, a collection of DicomDataSet objects, such as that returned by a DicomQuery Object’s DoQuery method.

    This data type is also used to represent data elements of the sequence (SQ) type.

    This object supports various operations which are not related to other specific objects
    In general, a DicomImage is a superset of the DicomDataSet type, which also contains a collection of attributes, the distinction being that a DicomImage contains pixel data, and is therefore displayable within a DicomViewer control, whereas a DicomDataSet does not contain pixel data, and is not displayable.  The different properties and methods reflect this difference.
    This is a true OLE collection, comprising DicomImage objects, including that represented by the DICOM viewer control’s Images Property.

    A DicomLabel item represents a label, or annotation, to be displayed over an image in a DicomViewer control, or in derived copies of the image.
    Labels may be ellipses (or circles), rectangles (or squares), lines, text or bitmaps, or other shapes (see LabelType for a full list), and the properties control not only the type and size of the object, but many other properties such as colour and line thickness. 

    Labels may be tied to the viewer control, to the display area in which an image is displayed, or to the image itself, this latter distinction being controlled by the RotateModeWithImage property.
    All properties have default values, which are suitable for many uses, and each is documented with the appropriate property.  The same label may be added into several DicomLabels collections if necessary, but where this is done, subsequent labels will be “cloned” when added, so that they may later be manipulated independently.  Also, unambiguous association of each DicomLabel with one image is necessary for the ROI functions.

    This is a true OLE collection, a consisting of DicomLabel objects.

    Although it may be instantiated independently, the most common examples of such collections are the Labels properties of DicomViewer and DicomImage objects, representing the labels to be drawn over that viewer or image respectively.


    An object which represents a single license allowing specific use of DicomObjects on this machine.
    This object supports various operations related to the licensing of DicomObjects.
    Object to simplify printing to DICOM printers
    This class provides a "view" of an image, including both 3D images and Fusion image.

    A DicomQuery Object is an externally creatable OLE automation object that facilitates the querying of information and retrieval of images from DICOM servers that support the Query/Retrieve protocols as a Service Class Provider (SCP)

    A useful feature of this object is that is re-usable, so as the user descends though a hierarchical search, new constraints may be added, and the search repeated, with having to re-set those already used.

    Automation object providing SCP functionality

    The primary purpose of this control is the display of DICOM images, and extensive facilities are available to allow images to be obtained from a variety of sources, including files and network operations.  There is extensive control over how the images are displayed, including not only the normal width/level controls, but also use of DICOM greyscale presentation states, a wide range of annotations, flipping, zooming etc.

    An object holding a set of slices which can be used as the basis for 3D reconstructions.
    As the IDispatch interface does not support true inheritance, the PropertiesFor3D object provides access to properties of a DicomImage object which is in fact a 3D Image
    As the IDispatch interface does not support true inheritance, the PropertiesForFusion object provides access to properties of a DicomImage object which is in fact a Fusion Image
    Public Enumerations
    Modes used by the DicomImage Mode Property

    Mode available for DicomLabel.AutoSizeMode

    Mode available for DicomImage.CacheMode
    The mode used by the DicomImage.CineMode Property
    Modes available for the DicomConnection's Mode Property
    The list of spacing filtering modes available for use in the DicomImage MagnificationMode and MinificationMode properties.

    Modes available for DicomImage.FlipState

    Where to align text in labels, as used in the DicomLabel's Alignment Property
    Types of DicomLabel, as specified by the LabelType Property
    Special monitor modes
    Common planes used to display 3D images
    Flags to control which features of presentation states are used and/or converted
    Modes available for DicomImage.RotateState
    Rotation behaviour of the Image
    Possible values for controlling the centre of rotation of a text label
    Possible values for controlling the rotation behaviour of a label
    How Label's dimensions should be interpreted and scaled
    Controls how "selection" handles are drawn on DicomLabels
    Control the shadowing of DicomLabel Objects
    Controls how an image is displayed
    The modes which can be used for displaying DICOM images in a DicomViewer
    Enumeration used to control whether simple width level has sharp corners (linear) or rounded ends (sigmoid)