public void SetTag(
int row,
MedicalViewerTagAlignment alignment,
MedicalViewerTagType type,
string userText,
Font font,
Color fontColor
)
row
The line at which the overlay text will be drawn.
alignment
The row parameter alignment.
type
The type of the tag.
userText
The user text.
font
The font that will be used to draw the tag over the cell.
fontColor
The color of the text.
The tag placement works by dividing the cell into rows (almost 30 rows) and 8 different alignments. For example:
If alignment is set to TopCenter, BottomCenter, CenterLeft, CenterRight, then row will not be used.
For more information, refer to Working With Annotations.
using Leadtools;
using Leadtools.Codecs;
using Leadtools.MedicalViewer;
public void MedicalViewerPropertiesExample()
{
MainForm2 form = new MainForm2();
form.ShowDialog();
}
// MainForm1 will be the owner of the medical viewer control.
class MainForm2 : Form
{
public MedicalViewer _medicalViewer;
void MedicalViewerForm_SizeChanged(object sender, EventArgs e)
{
_medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);
}
public MainForm2()
{
RasterCodecs _codecs = new RasterCodecs();
RasterImage _image;
// Create the medical viewer and adjust some properties.
_medicalViewer = new MedicalViewer();
_medicalViewer.Rows = 2;
_medicalViewer.Columns = 2;
_medicalViewer.Location = new Point(0, 0);
_medicalViewer.Size = new Size(this.ClientRectangle.Right, this.ClientRectangle.Bottom);
_medicalViewer.ResizeBoth = System.Windows.Forms.Cursors.SizeAll;
_medicalViewer.ResizeHorizontalCursor = System.Windows.Forms.Cursors.SizeWE;
_medicalViewer.ResizeVerticalCursor = System.Windows.Forms.Cursors.SizeNS;
_medicalViewer.SplitterColor = Color.FromArgb(128, 128, 128);
_medicalViewer.SplitterStyle = MedicalViewerSplitterStyle.Thick;
_medicalViewer.UseExtraSplitters = false;
_medicalViewer.VisibleRow = 0;
_medicalViewer.CellMaintenance = true;
_medicalViewer.CustomSplitterColor = true;
_medicalViewer.AutoScroll = true;
// Load an image and then add it to the control.
_image = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "xa.dcm"));
MedicalViewerMultiCell cell = new MedicalViewerMultiCell(_image, true, 1, 1);
cell.ActiveBorderColor = Color.FromArgb(0, 0, 255);
cell.ActiveSubCellBorderColor = Color.FromArgb(0, 255, 0);
cell.AnnotationDefaultCursor = System.Windows.Forms.Cursors.Cross;
cell.AnnotationMoveCursor = System.Windows.Forms.Cursors.SizeNWSE;
cell.AnnotationSelectCursor = System.Windows.Forms.Cursors.SizeAll;
cell.CellBackColor = Color.FromArgb(100, 100, 255);
cell.BorderStyle = MedicalViewerBorderStyle.DashDotDot;
cell.BackColor = Color.FromArgb(70, 70, 180);
cell.MeasurementUnit = MedicalViewerMeasurementUnit.Inches;
cell.NonActiveBorderColor = Color.FromArgb(0, 0, 0);
cell.PaintingMethod = MedicalViewerPaintingMethod.Normal;
cell.RegionDefaultCursor = System.Windows.Forms.Cursors.Cross;
cell.RulerInColor = Color.FromArgb(255, 255, 0);
cell.RulerOutColor = Color.FromArgb(255, 0, 0);
cell.RulerStyle = MedicalViewerRulerStyle.Bordered;
cell.ShowCellScroll = false;
cell.ShowFreezeText = true;
cell.TextColor = Color.FromArgb(255, 255, 0);
cell.TextQuality = MedicalViewerTextQuality.Draft;
cell.TextShadowColor = Color.FromArgb(0, 0, 0);
cell.OverlayTextSize = 0;
cell.RegionBorderColor1 = Color.FromArgb(0, 0, 255);
cell.RegionBorderColor2 = Color.FromArgb(255, 255, 255);
cell.InteractiveInterpolation = true;
// add some actions that will be used to change the properties of the images inside the control.
cell.AddAction(MedicalViewerActionType.WindowLevel);
cell.AddAction(MedicalViewerActionType.Alpha);
cell.AddAction(MedicalViewerActionType.Scale);
cell.AddAction(MedicalViewerActionType.Offset);
cell.AddAction(MedicalViewerActionType.Stack);
// assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.
cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
cell.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active);
cell.SetAction(MedicalViewerActionType.Scale, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active);
cell.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active);
// assign the added actions to a keyboard keys that will work like the mouse.
MedicalViewerKeys medicalKeys = new MedicalViewerKeys();
medicalKeys.MouseDown = Keys.Down;
medicalKeys.MouseUp = Keys.Up;
medicalKeys.MouseLeft = Keys.Left;
medicalKeys.MouseRight = Keys.Right;
cell.SetActionKeys(MedicalViewerActionType.Offset, medicalKeys);
medicalKeys.Modifiers = MedicalViewerModifiers.Ctrl;
cell.SetActionKeys(MedicalViewerActionType.WindowLevel, medicalKeys);
medicalKeys.MouseDown = Keys.PageDown;
medicalKeys.MouseUp = Keys.PageUp;
cell.SetActionKeys(MedicalViewerActionType.Stack, medicalKeys);
medicalKeys.MouseDown = Keys.Subtract;
medicalKeys.MouseUp = Keys.Add;
cell.SetActionKeys(MedicalViewerActionType.Scale, medicalKeys);
// Go through all the built in actions and remove the actions that have not been assigned to a mouse button, or a key.
int index = 1;
for (; index < 22; index++)
{
MedicalViewerActionType actionType = (MedicalViewerActionType)index;
if (cell.IsActionAdded(actionType))
{
MedicalViewerMouseButtons mouseButton = cell.GetActionButton(actionType);
if (mouseButton == MedicalViewerMouseButtons.None)
{
MedicalViewerKeys keys = cell.GetActionKeys(actionType);
if (keys.MouseLeft == Keys.None && keys.MouseUp == Keys.None && keys.MouseDown == Keys.None && keys.MouseRight == Keys.None)
cell.RemoveAction(actionType);
}
}
}
// Makes the window level applies the effect on all selected cells at the same time.
MedicalViewerActionFlags flags = cell.GetActionFlags(MedicalViewerActionType.WindowLevel);
flags |= MedicalViewerActionFlags.Selected;
cell.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, flags);
// Load an image and then add it to the control.
_image = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "image2.cmp"));
_medicalViewer.Cells.Add(cell);
// adjust some properties of the cell and add some tags.
cell.SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448");
cell.SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
cell.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale);
cell.SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData);
cell.SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView);
cell.SetTag(1, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "Good, Guy");
cell.SetTag(2, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "PID 125-98-445");
cell.SetTag(3, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "DOB 08/02/1929");
cell.SetTag(5, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "03/16/1999");
cell.SetTag(0, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.RulerUnit);
cell.Rows = 2;
cell.Columns = 2;
cell.Frozen = false;
cell.DisplayRulers = MedicalViewerRulers.Both;
cell.ApplyOnIndividualSubCell = false;
cell.ApplyActionOnMove = true;
cell.FitImageToCell = true;
cell.Selected = true;
cell.ShowTags = true;
// Load an image and then add it to the control.
_image = _codecs.Load(Path.Combine(LEAD_VARS.ImagesDir, "image2.cmp"));
MedicalViewerMultiCell cell1 = new MedicalViewerMultiCell();
cell1.Image = _image;
cell1.Rows = 2;
cell1.Columns = 2;
cell1.Frozen = false;
cell1.DisplayRulers = MedicalViewerRulers.Both;
cell1.ApplyOnIndividualSubCell = false;
cell1.ApplyActionOnMove = true;
cell1.FitImageToCell = true;
cell1.Selected = true;
cell1.ShowTags = true;
_medicalViewer.Cells.Add(cell1);
cell1.CellBackColor = Color.FromArgb(100, 100, 255);
cell1.BorderStyle = MedicalViewerBorderStyle.DashDotDot;
cell1.BackColor = Color.FromArgb(70, 70, 180);
cell1.MeasurementUnit = MedicalViewerMeasurementUnit.Inches;
cell1.NonActiveBorderColor = Color.FromArgb(0, 0, 0);
cell1.PaintingMethod = MedicalViewerPaintingMethod.Normal;
cell1.RegionDefaultCursor = System.Windows.Forms.Cursors.Cross;
cell1.RulerInColor = Color.FromArgb(255, 255, 0);
cell1.RulerOutColor = Color.FromArgb(255, 0, 0);
cell1.RulerStyle = MedicalViewerRulerStyle.Bordered;
cell1.ShowCellScroll = false;
cell1.ShowFreezeText = true;
cell1.TextColor = Color.FromArgb(255, 255, 0);
cell1.TextQuality = MedicalViewerTextQuality.Draft;
cell1.TextShadowColor = Color.FromArgb(0, 0, 0);
cell1.OverlayTextSize = 0;
cell1.RegionBorderColor1 = Color.FromArgb(0, 0, 255);
cell1.RegionBorderColor2 = Color.FromArgb(255, 255, 255);
cell1.InteractiveInterpolation = true;
// add some actions that will be used to change the properties of the images inside the control.
cell1.AddAction(MedicalViewerActionType.WindowLevel);
cell1.AddAction(MedicalViewerActionType.Alpha);
cell1.AddAction(MedicalViewerActionType.Scale);
cell1.AddAction(MedicalViewerActionType.Offset);
cell1.AddAction(MedicalViewerActionType.Stack);
// assign the added actions to a mouse button, meaning that when the user clicks and drags the mouse button, the associated action will be activated.
cell1.SetAction(MedicalViewerActionType.WindowLevel, MedicalViewerMouseButtons.Left, MedicalViewerActionFlags.Active);
cell1.SetAction(MedicalViewerActionType.Offset, MedicalViewerMouseButtons.Right, MedicalViewerActionFlags.Active);
cell1.SetAction(MedicalViewerActionType.Scale, MedicalViewerMouseButtons.Middle, MedicalViewerActionFlags.Active);
cell1.SetAction(MedicalViewerActionType.Stack, MedicalViewerMouseButtons.Wheel, MedicalViewerActionFlags.Active);
// assign the added actions to a keyboard keys that will work like the mouse.
medicalKeys = new MedicalViewerKeys();
medicalKeys.MouseDown = Keys.Down;
medicalKeys.MouseUp = Keys.Up;
medicalKeys.MouseLeft = Keys.Left;
medicalKeys.MouseRight = Keys.Right;
cell1.SetActionKeys(MedicalViewerActionType.Offset, medicalKeys);
medicalKeys.Modifiers = MedicalViewerModifiers.Ctrl;
cell1.SetActionKeys(MedicalViewerActionType.WindowLevel, medicalKeys);
medicalKeys.MouseDown = Keys.PageDown;
medicalKeys.MouseUp = Keys.PageUp;
cell1.SetActionKeys(MedicalViewerActionType.Stack, medicalKeys);
medicalKeys.MouseDown = Keys.Subtract;
medicalKeys.MouseUp = Keys.Add;
cell1.SetActionKeys(MedicalViewerActionType.Scale, medicalKeys);
// adjust some properties to the cell1 and add some tags.
cell1.SetTag(2, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.UserData, "EX. ID 230-36-5448");
cell1.SetTag(4, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
cell1.SetTag(6, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Scale);
cell1.SetTag(2, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData);
cell1.SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.FieldOfView);
cell1.SetTag(1, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "Good, Guy");
cell1.SetTag(2, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "PID 125-98-445");
cell1.SetTag(3, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "DOB 08/02/1929");
cell1.SetTag(5, MedicalViewerTagAlignment.TopRight, MedicalViewerTagType.UserData, "03/16/1999");
cell1.SetTag(0, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.RulerUnit);
Controls.Add(_medicalViewer);
_medicalViewer.Dock = DockStyle.Fill;
}
}
static class LEAD_VARS
{
public const string ImagesDir = @"C:\LEADTOOLS23\Resources\Images";
}