Dynamically adding COM Viewer control to .NET application form

First of all, you need to have at least one Viewer control on the form before you can dynamically add other viewer controls. The OCXState contains all sorts of information and most important of all – the licensing information of the DicomViewer control. That’s why you have to have at least one viewer by design time on the form before you can add others on the fly. The following code demonstrates how to add a second DicomViewer on the fly:

AVI Import

Importing AVI into DICOM multi-frame Image using DicomObjects is fairly easy.

COM version of DicomObjects

Use DicomImage.Import method. Some simple vb6 code here:

Dim Image as New DicomImage
Image.Import("C:\TestAvi.AVI", "AVI")

Creating Frame-Specific DICOM Presentation State using DicomObjects

Sometimes we are asked about how to create frame-specific DICOM presentation state files for multiframe images. This is not difficult in DicomObjects and can by done in a slightly awkward way. Instead of adding the entire "Referenced Series Sequence" to the top level of the presentation state file, all you need to do is adding the "Referenced Frame Number" item into "Referenced Image Sequence" under "Graphic Annotation Sequence", as shown in the following picture:

Borland Rich Errors

Borland Has a problem handling exceptions generated outside of it own code. A standard implementation WILL NOT pass back any information about the nature of exceptions thrown by DicomObjects. The only way to get Borland to pass back the information is to edit a Borland header file "utilcls.h"

Search for the define of Invoke "TAutoDriver<DISPINTF>::Invoke" There will be 2 hits. In the second of these there is the following segment:



Feel free to use and experiment - this is for all DicomObjects users - old and new!

ImplementationUID and ImplementationName

The Implementation Identification information allows implementations of communicating AEs to identify each other at Association establishment time. It is intended to provide non-ambiguous version identification in the event of communication problems encountered between two nodes. This information only relates to the software on the machine, not the machine itself, so it is perfectly permission and normal for multiple pieces of equipment to have the same values.

How to implement a Magnifying Glass in COM version of DicomObjects

A magnifying glass has been implemented and included in any of our sample viewer programs on the examples web page.

Following is VB.NET code showing you how to make a Magnifying Glass using the COM version of DicomObjects.

Please NOTE, in order to get it working, Viewer's Container's (Normally a Windows Form) ScaleMode needs to be set to Pixel, and Viewer's UseScrollBars property needs to be set to false.

Use both versions of DicomObjects in one project

It is possible to use both the COM (ActiveX) version and .NET version of DicomObjects in the same project. The only problem you have to avoid is the conflicting namespace - as in both versions the namespace is the same "DicomObjects".

One solution to solve the namespace conflicts is to use the Type Library Importer (tlbimp.exe) tool which comes with the Microsoft Visual Studio. It converts the type definitions found within the COM version of DicomObjects into equivalent definitions in a CLR assembly, which can then be referenced in the project.

Develop registration-free .NET application with DicomObjects.ocx

When you are going to use DicomObjects.ocx, normally you will have to register it, either manually via Regsvr32.exe or some sort of installer program which does it automatically for you. This is all fine when you have the permission (as a developer, you are almost guaranteed to be the system admin), but exception will be thrown when you are restricted user (i.e. people using the pc on your client site).


Subscribe to RSS - COM