COM

Barco Problems

It is a sad fact of life that “specialist” cards such as medical greyscale cards have often got a lot more undetected bugs than “consumer” cards which are tested on a far wider range of systems, and this particularly affects their DirectDraw driver implementations. Barco monitors seem to have the most problems, but the same effects (e.g. white screen) can be seen with others also.

There are 4 suggestions:

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:

 

DicomObjectsWiki:About

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.

Pages

Subscribe to RSS - COM