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 { } }
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 { } }
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(); } }
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); } } }