Move DicomLabel when Image is Flipped/Rotated

Moving (using the mouse) DicomLabel could be a little bit tricky when the ImageTied is set to true and flip/rotate operations have been applied to the DicomImage.

The following sample vb6 code is referring to our DicomViewer VB6 sample program, where Label Moving is happening in DicomViewer's MouseMove event.

Select Case SelectedImage.RotateState
  Case 0: ' normal
    Select Case SelectedImage.FlipState
       Case 0:  ' normal
            OffsetX = x - InitialX
            OffsetY = y - InitialY
       Case 1:  ' horizontal flip
            OffsetX = InitialX - x
            OffsetY = y - InitialY
       Case 2: ' vertically flip
            OffsetX = x - InitialX
            OffsetY = InitialY - y
       Case 3: ' flip both direction
            OffsetX = InitialX - x
            OffsetY = InitialY - y
    End Select
Case 1: ' Left Select Case SelectedImage.FlipState Case 0: ' normal OffsetX = InitialY - y OffsetY = x - InitialX Case 1: ' horizontal flip OffsetX = y - InitialY OffsetY = x - InitialX Case 2: ' vertically flip OffsetX = InitialY - y OffsetY = InitialX - x Case 3: ' flip both direction OffsetX = y - InitialY OffsetY = InitialX - x End Select
Case 2: ' 180 Select Case SelectedImage.FlipState Case 0: ' normal OffsetX = InitialX - x OffsetY = InitialY - y Case 1: ' horizontal flip OffsetX = x - InitialX OffsetY = InitialY - y Case 2: ' vertically flip OffsetX = InitialX - x OffsetY = y - InitialY Case 3: ' flip both direction OffsetX = x - InitialX OffsetY = y - InitialY End Select
Case 3: ' 270 Select Case SelectedImage.FlipState Case 0: ' normal OffsetX = y - InitialY OffsetY = InitialX - x Case 1: ' horizontal flip OffsetX = InitialY - y OffsetY = InitialX - x Case 2: ' vertically flip OffsetX = y - InitialY OffsetY = x - InitialX Case 3: ' flip both direction OffsetX = InitialY - y OffsetY = x - InitialX End Select End Select

OffsetX and OffsetY need to be recalculated when flip/rotate have been applied to the Image. There are ONLY 8 different cases (4 rotations * 2 Horizontal Flips), not 16 cases as shown in the above sample code, so the sample code could be simplified if needed.

User login