Пример #1
0
        private void AutoApplyWW_WC(MedicalViewerCell cell, int _WW, int _WC)
        {

            try
            {
                if (cell.Image.Order == RasterByteOrder.Gray && cell.Image.BitsPerPixel > 8)
                {
                    // update lookup table

                    try
                    {

                        ApplyLinearVoiLookupTableCommand command = new ApplyLinearVoiLookupTableCommand();
                        MinMaxBitsCommand minMaxBits = new MinMaxBitsCommand();
                        MinMaxValuesCommand minMaxValues = new MinMaxValuesCommand();
                        //if (ADJUST_WOB)
                        //command.Flags = VoiLookupTableCommandFlags.ReverseOrder;
                        // else
                        command.Flags = VoiLookupTableCommandFlags.None;

                        minMaxBits.Run(cell.Image);
                        cell.Image.LowBit = minMaxBits.MinimumBit;
                        cell.Image.HighBit = minMaxBits.MaximumBit;
                        minMaxValues.Run(cell.Image);
                        command.Width = _WW;
                        command.Center = _WC;
                        command.Run(cell.Image);
                        cell.Invalidate();
                        WindowLevelCommand _WindowLevelCommand = new WindowLevelCommand();
                        _WindowLevelCommand.HighBit = cell.Image.HighBit;
                        _WindowLevelCommand.LowBit = cell.Image.LowBit;
                        _WindowLevelCommand.LookupTable = cell.Image.GetLookupTable();
                        //_WindowLevelCommand.Order = RasterByteOrder.Rgb;
                        _WindowLevelCommand.Run(cell.Image);
                    }
                    catch
                    {
                    }
                }
            }
            catch
            {
            }
            finally
            {

            }
        }
Пример #2
0
        private void AutoApplyWW_WC(RasterImage img)
        {
            
            try
            {
                if (lblAppliedLastWL.IsChecked==false || WC == 0 || WW == 0)
                {
                    AllowAppliedWL = false;
                    return;
                }
                using (Leadtools.Commands.Demos.WaitCursor wait = new Leadtools.Commands.Demos.WaitCursor())
                {


                    if (img.Order == RasterByteOrder.Gray && img.BitsPerPixel > 8)
                    {
                        // update lookup table

                        try
                        {

                            ApplyLinearVoiLookupTableCommand command = new ApplyLinearVoiLookupTableCommand();
                            MinMaxBitsCommand minMaxBits = new MinMaxBitsCommand();
                            MinMaxValuesCommand minMaxValues = new MinMaxValuesCommand();
                            if (ADJUST_WOB)
                                command.Flags = VoiLookupTableCommandFlags.ReverseOrder;
                            else
                                command.Flags = VoiLookupTableCommandFlags.None;

                            minMaxBits.Run(img);
                            img.LowBit = minMaxBits.MinimumBit;
                            img.HighBit = minMaxBits.MaximumBit;
                            minMaxValues.Run(img);
                            command.Width = WW;
                            command.Center = WC;
                            command.Run(img);
                            //_CurrCell.Invalidate();
                        }
                        catch
                        {
                        }
                    }



                }
            }
            catch
            {
            }
            finally
            {
               
            }
        }
Пример #3
0
        void ShowWindowLeveling(MedicalViewer _mecViewer)
        {
            try
            {
                if (!_DicomMedicalViewer.IsValidCell()) return;
                RasterImage Img = _CurrCell.Image;
                RasterWindowLevelDialog windowLevelDlg = new RasterWindowLevelDialog();

                int lookupSize;
                MinMaxBitsCommand minMaxBits = new MinMaxBitsCommand();
                MinMaxValuesCommand minMaxValues = new MinMaxValuesCommand();
                RasterColor[] lookupTable;

                minMaxBits.Run(Img);
                minMaxValues.Run(Img);

                lookupSize = (1 << (minMaxBits.MaximumBit - minMaxBits.MinimumBit + 1));
                lookupTable = new RasterColor[lookupSize];


                windowLevelDlg.Image = Img;
                windowLevelDlg.ShowPreview = true;
                windowLevelDlg.ShowRange = true;
                windowLevelDlg.ShowZoomLevel = true;
                windowLevelDlg.ZoomToFit = true;
                windowLevelDlg.LowBit = minMaxBits.MinimumBit;
                windowLevelDlg.HighBit = minMaxBits.MaximumBit;// > 4998 ? 4998 : minMaxBits.MaximumBit;
                windowLevelDlg.High = minMaxValues.MaximumValue;//> 4998 ? 4998 : minMaxValues.MaximumValue;
                windowLevelDlg.Low = minMaxValues.MinimumValue;
                windowLevelDlg.High = minMaxValues.MaximumValue;
                windowLevelDlg.WindowLevelFlags = RasterPaletteWindowLevelFlags.Inside | RasterPaletteWindowLevelFlags.Linear | RasterPaletteWindowLevelFlags.DicomStyle;
                windowLevelDlg.LookupTable = lookupTable;
                windowLevelDlg.Signed = Img.Signed;

                switch (Img.GrayscaleMode)
                {
                    case RasterGrayscaleMode.OrderedNormal:
                        {
                            windowLevelDlg.StartColor = new RasterColor(0, 0, 0);
                            windowLevelDlg.EndColor = new RasterColor(255, 255, 255);

                            break;
                        }

                    case RasterGrayscaleMode.OrderedInverse:
                        {
                            windowLevelDlg.StartColor = new RasterColor(255, 255, 255);
                            windowLevelDlg.EndColor = new RasterColor(0, 0, 0);

                            break;
                        }

                    case RasterGrayscaleMode.NotOrdered:
                        {
                            windowLevelDlg.StartColor = new RasterColor(0, 0, 0);
                            windowLevelDlg.EndColor = new RasterColor(255, 255, 255);

                            break;
                        }

                    default:
                        {
                            MessageBox.Show(Owner,
                                              "Window Level is not supported for this bitmap order",
                                              "Window Level Error",
                                              MessageBoxButtons.OK);

                            //_menuItemColorWindowLevel.Enabled = false;

                            return;
                        }
                }


                if (windowLevelDlg.ShowDialog(Owner) == DialogResult.OK)
                {

                    RasterPalette.WindowLevelFillLookupTable(lookupTable,
                                                              windowLevelDlg.StartColor,
                                                              windowLevelDlg.EndColor,
                                                              windowLevelDlg.Low,
                                                              windowLevelDlg.High,
                                                              windowLevelDlg.LowBit,
                                                              windowLevelDlg.HighBit,
                                                              minMaxValues.MinimumValue,
                                                              minMaxValues.MaximumValue,
                                                              windowLevelDlg.Factor,
                                                              windowLevelDlg.WindowLevelFlags |
                                                              (windowLevelDlg.Signed ? RasterPaletteWindowLevelFlags.Signed : RasterPaletteWindowLevelFlags.None));

                    Img.WindowLevel(windowLevelDlg.LowBit,
                                                        windowLevelDlg.HighBit,
                                                        lookupTable,
                                                        RasterWindowLevelMode.PaintAndProcessing);

                   _CurrCell.Image = Img.CloneAll();
                    _DicomMedicalViewer.try2FreeImage(ref Img);
                }
            }
            catch (Exception ex)
            {
                //Messager.ShowError(this, ex);
            }
            finally
            {
                // UpdateControls();
            }
        }
Пример #4
0
        private void AutoApplyWW_WC()
        {
            bool AllowAppliedWL = true;
            try
            {
                if (lblAppliedLastWL.IsChecked==false || WC == 0 || WW == 0)
                {
                    AllowAppliedWL = false;
                    return;
                }
                using (Leadtools.Commands.Demos.WaitCursor wait = new Leadtools.Commands.Demos.WaitCursor())
                {


                    if (_CurrCell.Image.Order == RasterByteOrder.Gray && _CurrCell.Image.BitsPerPixel > 8)
                    {
                        // update lookup table

                        try
                        {

                            ApplyLinearVoiLookupTableCommand command = new ApplyLinearVoiLookupTableCommand();
                            MinMaxBitsCommand minMaxBits = new MinMaxBitsCommand();
                            MinMaxValuesCommand minMaxValues = new MinMaxValuesCommand();
                            if (ADJUST_WOB)
                                command.Flags = VoiLookupTableCommandFlags.ReverseOrder;
                            else
                                command.Flags = VoiLookupTableCommandFlags.None;

                            minMaxBits.Run(_CurrCell.Image);
                            _CurrCell.Image.LowBit = minMaxBits.MinimumBit;
                            _CurrCell.Image.HighBit = minMaxBits.MaximumBit;
                            minMaxValues.Run(_CurrCell.Image);
                            command.Width = WW;
                            command.Center = WC;
                            command.Run(_CurrCell.Image);
                            _CurrCell.Invalidate();
                        }
                        catch
                        {
                        }
                    }
                }
            }
            catch
            {
            }
            finally
            {
                if (AllowAppliedWL)
                {
                    _DicomMedicalViewer.SetWindowLevel(_CurrCell, WW, WC);
                    
                }
            }
        }