Specifying outgoing IP when making a DICOM connection

      using (var socket = new Socket(AddressFamily.InterNetwork, SocketType.Stream, ProtocolType.Tcp))
                var localEP = new IPEndPoint(IPAddress.Parse("outgoingIP"), 0);  0 means any available port
                var remoteEP = new IPEndPoint(IPAddress.Parse("remoteIP"), remotePort);
                NetworkStream ns = new NetworkStream(socket, true);                

Setting TransferFunction in 3D

Sample code for general purpose colour/opacity adjustment. This might not be sensible values because this is intended purely for demonstration purposes only!

C# code snippet:

Video support with FFmpeg

Starting with version 8 we have added video support with the help of FFmpeg, a well established video codec, for handling all sorts of popular video formats. This allows importing of supported video formats, embedding them into DICOM and exporting them using the appropriate transfer syntax.

Simplifying 3D coordinate geometry in v7

All 3D calculations in DicomObjects are almost entirely in “real world” coordinated (patient X,Y,Z in mm). We have implemented a few dedicated methods to help you manipulate your 3D object or the ones that are displayed. A newly added method is DicomImage.ImagePlane() which returns an Image's plane in Plane3D form that can be used for other calculation (in real world units again), say the intersection of two Image planes, or to offset one of them by the slab thickness and to calculate that intersection, etc.

Implementing DICOM Composite Instance Retrieve Without Bulk Data

DICOM Composite Instance Retrieve Without Bulk Data is supported by DicomObjects and it's not difficult to implment.

Client Side:

The following code demonstrates how to retrieve individual instances without bulk data:

Deactivating licences

Installed licences can be deleted in different ways as described in the following steps:
  1. Programmatically - you could do something like this from your code:

.NET (C# code snippet)

Speed options for 3D rendering

Whilst DicomObjects (COM & .NET) have been optimised to provide reasonably fast 3D rendering, there are times when (depending on the capabilities of the machine, and the nature of the data) it may be necessary to use "simplified" data for interactive rendering, to give best possible response times.  In most of the cases, this is best done by activating the feature on mouse-down etc. and then disabling (returning to default values) on mouse-up etc.

Frame Level Retrieval

Frame Level Retrieval (DICOM Supplement 119) is written by Dr. David Harvey, our managing director, and is fully supported by DicomObjects.

There are 2 (actually 3, with the 3rd one using Content Time values to specify a Time Range) ways to ask for specific frames:

Simple Frame List

Contains a list of frame numbers, each specifying a frame to be included in the returned object.

Activating licences

Both online and offline licence activation can be done using different methods as shown below:

  1. Programmatically - you could do something like this from your code and avoid the license dialog pop up:

.NET (C# code snippet)

string result;
DicomLicense.ActivateOnLine("Your Licence key", "Company Name", "Other Activation details", out result);


Subscribe to RSS - .NET