/// <summary> /// Gets the film size string from enum. Note, have to do this because can't make enum values that start with a number... /// </summary> /// <param name="filmSizeId">The film size id.</param> /// <returns></returns> public static string GetFilmSizeStringFromEnum(FilmSize filmSizeId) { string result = String.Empty; if (filmSizeId != FilmSize.None) { if (filmSizeId == FilmSize.A3 || filmSizeId == FilmSize.A4) result = filmSizeId.ToString(); else if (filmSizeId.ToString().Length > 2) { string filmSizeString = filmSizeId.ToString(); // Format is INYxZ or CMYxZ - where Y is first dimension and Z is second dimension - ie, IN10x14 - need to turn it into 10INX14IN string inOrCm = filmSizeString.Substring(0, 2); string[] numbers = filmSizeString.Substring(2).Split("x".ToCharArray()); if (numbers.Length == 2) result = String.Format(CultureInfo.InvariantCulture, "{0}{1}X{2}{1}", numbers[0], inOrCm, numbers[1]); else { // TODO: put warning somewhere... result = String.Empty; } } } return result; }
public void Empty_DicomString_Test() { var filmSize = FilmSize.FromDicomString(string.Empty); Assert.IsNull(filmSize); }
public void Lower_Case_X_Test() { FilmSize.FromDicomString("11MMx22MM"); }
public void Null_DicomString_Test() { var filmSize = FilmSize.FromDicomString(null); Assert.IsNull(filmSize); }
public void Two_Different_Units_Test() { FilmSize.FromDicomString("11INX22CM"); }
public void Invalid_Units_Test() { FilmSize.FromDicomString("11MMX22MM"); }
public static List <IPresentationImage> Merger(FilmSize filmSizeId, int filmDPI, FilmOrientation filmOrientation, List <ISelectPresentationsInformation> selects, PresentationMode presentationMode, ColorMode colorMode, int tileCount) { if (selects.Count == 0) { return(null); } List <IPresentationImage> results = new List <IPresentationImage>(); Size filmSize = CaclFilmAndImageSize.FilmBoxSize(filmSizeId, filmDPI, filmOrientation); if (filmSize == Size.Empty) { return(null); } Bitmap result = null; System.Drawing.Graphics graphics = null; string savePath = null; foreach (var temp in selects) { var imageSopProvider = temp.Image as IImageSopProvider; if (imageSopProvider == null) { continue; } var localSource = imageSopProvider.ImageSop.DataSource as ILocalSopDataSource; if (localSource != null) { int index = localSource.Filename.LastIndexOf("\\"); savePath = localSource.Filename.Substring(0, index); break; } } for (int i = 0; i < selects.Count; i++) { var select = selects[i]; if (i != 0 && i % tileCount == 0) //翻页时进入此处 { IPresentationImage presentationImage = CreateResultImage(result, colorMode, savePath); graphics.Dispose(); results.Add(presentationImage); result.Dispose(); result = null; } if (result == null) { result = new Bitmap(filmSize.Width, filmSize.Height); graphics = System.Drawing.Graphics.FromImage(result); } Point location; Size imageBoxSize = CaclFilmAndImageSize.ImageBoxSize(filmSize, out location, select.NormalizedRectangle); Bitmap bitmap = GetPrintImageBitmap(select, imageBoxSize, presentationMode); if (bitmap == null) { continue; } System.Drawing.Graphics borderGraphics = System.Drawing.Graphics.FromImage(bitmap); Platform.Log(LogLevel.Debug, new Size(bitmap.Width, bitmap.Height)); borderGraphics.DrawRectangle(new Pen(Color.White, 2), 0, 0, bitmap.Width, bitmap.Height); graphics.DrawImageUnscaled(bitmap, location.X, location.Y); bitmap.Dispose(); borderGraphics.Dispose(); } var image = CreateResultImage(result, colorMode, savePath); graphics.Dispose(); results.Add(image); result.Dispose(); return(results); }
private void Loaded(object sender, EventArgs e) { if (printComponent == null) { return; } FilmSize fileSize = printComponent.DicomPrinterConfigurationEditorComponent.FilmSize.ToFilmSize(); FilmOrientation filmOrientation = printComponent.DicomPrinterConfigurationEditorComponent.FilmOrientation; if (_component.RootImageBox != null) { _component.ImageBoxSizeChanged(fileSize, filmOrientation); } if (filmOrientation == FilmOrientation.Landscape) { radioHengXiang.Checked = true; } else if (filmOrientation == FilmOrientation.Portrait) { radioZongXiang.Checked = true; } this.NumberOfCopies.DataBindings.Clear(); this.NumberOfCopies.DataBindings.Add("Value", printComponent.DicomPrinterConfigurationEditorComponent, "NumberOfCopies", true, DataSourceUpdateMode.OnPropertyChanged); this.FilmSizeComBox.DataBindings.Clear(); this.FilmSizeComBox.DataSource = printComponent.DicomPrinterConfigurationEditorComponent.FilmSizeChoices; this.FilmSizeComBox.DataBindings.Add("SelectedItem", printComponent.DicomPrinterConfigurationEditorComponent, "FilmSize", true, DataSourceUpdateMode.Never); InitDicomPrintTable(); ISelection selectedItem = printComponent.SelectedItem; if (selectedItem == null || selectedItem.Item == null) { return; } var print = (Checkable <DicomPrinter>)selectedItem.Item; foreach (object item in DicomPrintTable.Items) { var name = (string)item; if (name == null) { continue; } if (name == print.Item.Name) { DicomPrintTable.SelectedItem = item; break; } } printComponent.DicomPrinterConfigurationEditorComponent.ImageDisplayFormat = new PrinterImageDisplayFormat() { Value = displayFormat.DicomString };; }