Converting LEAD Annotation Objects to DICOM Annotation Objects Example for C#
//This example uses the predefined variable “objPresState” 
 of type “LEADDicomDS” from “"LEADTOOLS Toolkit”.
private void objPresState_OnConvertLEADAnnObjToDicomAnnObj(bool bGraphicObject)
{
   string sMsg = null;
   // Display the attributes of the resulted DICOM annotation 
 object int lCount = 0;
   int I = 0; 
   if (bGraphicObject)    // The resulted 
 DICOM annotation object is a graphic object
   {
      sMsg = "Graphic Annotation Units: 
 "; 
      switch ( objPresState.GraphicObjectAttributes.Units ) 
      { 
      case LTDICLib.DicomMeasureUnits.DICOM_UNIT_PIXEL: 
 
            sMsg 
 = sMsg + "PIXEL" + System.Environment.NewLine;
            break;
      case LTDICLib.DicomMeasureUnits.DICOM_UNIT_DISPLAY: 
 
            sMsg 
 = sMsg + "DISPLAY" + System.Environment.NewLine;
            break;
      } 
      sMsg = sMsg + "Graphic Type: ";
      switch ( objPresState.GraphicObjectAttributes.Type 
 )
      {
         case LTDICLib.DicomGraphicObjectTypes.DICOM_GRAPHIC_OBJECT_TYPE_POINT:
               sMsg 
 = sMsg + "POINT" + System.Environment.NewLine; 
               break;
         case LTDICLib.DicomGraphicObjectTypes.DICOM_GRAPHIC_OBJECT_TYPE_POLYLINE: 
 
               sMsg 
 = sMsg + "POLYLINE" + System.Environment.NewLine;
               break;
         case LTDICLib.DicomGraphicObjectTypes.DICOM_GRAPHIC_OBJECT_TYPE_INTERPOLATED:
               sMsg 
 = sMsg + "INTERPOLATED" + System.Environment.NewLine;
               break;
         case LTDICLib.DicomGraphicObjectTypes.DICOM_GRAPHIC_OBJECT_TYPE_CIRCLE:
               sMsg 
 = sMsg + "CIRCLE" + System.Environment.NewLine;
               break;
         case LTDICLib.DicomGraphicObjectTypes.DICOM_GRAPHIC_OBJECT_TYPE_ELLIPSE:
               sMsg 
 = sMsg + "ELLIPSE" + System.Environment.NewLine; 
               break;
      }
   
      sMsg = sMsg + "Graphic Filled: 
 ";
      if (objPresState.GraphicObjectAttributes.Filled) 
         sMsg = sMsg + "Y" 
 + System.Environment.NewLine; 
      else 
         sMsg = sMsg + "N" 
 + System.Environment.NewLine; 
      lCount = objPresState.GraphicObjectAttributes.PointCount;
      sMsg = sMsg + "Number of Graphic 
 Points: " + lCount + System.Environment.NewLine;
      if (lCount < 10)
      {
         sMsg = sMsg + "Graphic 
 Data: " + System.Environment.NewLine; 
         for (I = 0; I < 
 lCount; I++) 
         { 
            sMsg 
 = sMsg + " " + "X" + I + 1 + ", Y" + I + 
 1 + " = " + objPresState.GraphicObjectAttributes.get_PointsX(I) + ", " 
 + objPresState.GraphicObjectAttributes.get_PointsY(I) + System.Environment.NewLine;
         }
      }
      MessageBox.Show(sMsg, "Graphic 
 Annotation Object");
      }
      else 
      // The resulted DICOM annotation object 
 is a text object 
      {
         if (objPresState.TextObjectAttributes.BoundingBoxUsed) 
 
         {
            sMsg 
 = "Unformatted Text Value: " + objPresState.TextObjectAttributes.TextValue + System.Environment.NewLine;
            sMsg 
 = sMsg + "Bounding Box Annotation Units: ";
            switch 
 ( objPresState.TextObjectAttributes.BoundingBoxUnits 
 ) 
            {
               case 
 LTDICLib.DicomMeasureUnits.DICOM_UNIT_PIXEL: 
                  sMsg 
 = sMsg + "PIXEL" + System.Environment.NewLine;
                  break; 
 
               case 
 LTDICLib.DicomMeasureUnits.DICOM_UNIT_DISPLAY: 
                  sMsg 
 = sMsg + "DISPLAY" + System.Environment.NewLine;
                  break; 
 
            }
            sMsg 
 = sMsg + "Bounding Box Top Left Hand Corner: " + objPresState.TextObjectAttributes.BoundingBoxTLHCornerX 
 + ", " + objPresState.TextObjectAttributes.BoundingBoxTLHCornerY 
 + System.Environment.NewLine;
            sMsg 
 = sMsg + "Bounding Box Bottom Right Hand Corner: " + objPresState.TextObjectAttributes.BoundingBoxBRHCornerX 
 + ", " + objPresState.TextObjectAttributes.BoundingBoxBRHCornerY 
 + System.Environment.NewLine;
            sMsg 
 = sMsg + "Bounding Box Text Horizontal Justification: "; 
            switch 
 ( objPresState.TextObjectAttributes.BoundingBoxTextJustification 
 )
            {
               case 
 LTDICLib.DicomTextJustificationTypes.DICOM_TEXT_JUSTIFICATION_LEFT:
                  sMsg 
 = sMsg + "LEFT" + System.Environment.NewLine; 
                  break;
               case 
 LTDICLib.DicomTextJustificationTypes.DICOM_TEXT_JUSTIFICATION_RIGHT: 
                  sMsg 
 = sMsg + "RIGHT" + System.Environment.NewLine; 
                  break; 
 
               case 
 LTDICLib.DicomTextJustificationTypes.DICOM_TEXT_JUSTIFICATION_CENTER:
                  sMsg 
 = sMsg + "CENTER" + System.Environment.NewLine;
                  break;
            }
         }
         else 
         { 
            sMsg 
 = "Unformatted Text Value: " + objPresState.TextObjectAttributes.TextValue + System.Environment.NewLine;
            sMsg 
 = sMsg + "Anchor Point Annotation Units: "; 
            switch 
 ( objPresState.TextObjectAttributes.AnchorPointUnits 
 ) 
            {
               case 
 LTDICLib.DicomMeasureUnits.DICOM_UNIT_PIXEL:
                  sMsg 
 = sMsg + "PIXEL" + System.Environment.NewLine;
                  break;
               case 
 LTDICLib.DicomMeasureUnits.DICOM_UNIT_DISPLAY:
                  sMsg 
 = sMsg + "DISPLAY" + System.Environment.NewLine;
                  break;
            }
            sMsg 
 = sMsg + "Anchor Point: " + objPresState.TextObjectAttributes.AnchorPointX + ", 
 " + objPresState.TextObjectAttributes.AnchorPointY + System.Environment.NewLine; 
 sMsg = sMsg + "Anchor Point Visibility: "; 
            if 
 (objPresState.TextObjectAttributes.AnchorPointVisible)
               sMsg 
 = sMsg + "Y";
            else 
 
               sMsg 
 = sMsg + "N"; 
         }
         MessageBox.Show(sMsg, 
 "Text Annotation Object");
      }
      // If it is desired to stop the conversion 
 process...
      //objPresState.EndConversion (DICOM_ERROR_ANN 
 ) 
      // Any error code, but not 0
   }
private void LEADAnnToDicomAnn(ref LTDICLib.LEADDicomDS objPresStateDS) 
 
{
   // Update the CurrentElement property with a Graphic 
 Annotation Item so
   // that the resulted DICOM annotation objects are added 
 to the Data Set
   if (objPresStateDS.FindFirstGraphicAnnItem() 
 != 0)
   {
      // (Make sure that the specified layer 
 is already defined in the
      // "Graphic Layer Module") 
 objPresStateDS.CreateGraphicAnnItem(0, 
 "LAYER_0");
      objPresStateDS.FindFirstGraphicAnnItem();
   }
   LTANNLib.LEADRasterAnnotation objRasterAnn = new LTANNLib.LEADRasterAnnotation();
   // Let's create a LEAD rectangle annotation object objRasterAnn.AnnCreate((short)LTANNLib.AnnObjectType.ANN_OBJECT_RECT, 
 false, false);
   objRasterAnn.set_AnnRectLeft(objRasterAnn.AnnObject, 
 150); 
   objRasterAnn.set_AnnRectTop(objRasterAnn.AnnObject, 175); 
 
   objRasterAnn.set_AnnRectWidth(objRasterAnn.AnnObject, 
 200);
   objRasterAnn.set_AnnRectHeight(objRasterAnn.AnnObject, 
 100);
   objRasterAnn.AnnSetFillMode(objRasterAnn.AnnObject, (short)LTANNLib.AnnFillModeConstants.ANN_FILLMODE_TRANSPARENT, 
 false);
   // Convert the LEAD annotation object. Now, for each 
 resulted DICOM annotation
   // object, the OnConvertLEADAnnObjToDicomAnnObj event 
 gets fired. By handling
   // the event, you can inspect the resulted object.
   if (objPresStateDS.ConvertLEADAnnObjToDicomAnnObjs(objRasterAnn.AnnObject, 
 0) == (short)LTDicomKernelLib.DicomErrorCodes.DICOM_SUCCESS) 
      MessageBox.Show("The LEAD annotation 
 object was converted successfully.");
   // Destroy the LEAD annotation object objRasterAnn.AnnDestroy(objRasterAnn.AnnObject, 
 0);
}