MainActivity.cs 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. // Copyright (c) 2012-2018 fo-dicom contributors.
  2. // Licensed under the Microsoft Public License (MS-PL).
  3. using System;
  4. using System.IO;
  5. using Android.App;
  6. using Android.Graphics;
  7. using Android.Widget;
  8. using Android.OS;
  9. using Android.Views;
  10. using Dicom;
  11. using Dicom.Imaging;
  12. using Dicom.Log;
  13. using Java.Interop;
  14. namespace SimpleViewer.Android
  15. {
  16. [Activity(Label = "SimpleViewer.Android", MainLauncher = true, Icon = "@drawable/icon")]
  17. public class MainActivity : Activity
  18. {
  19. #region Fields
  20. private readonly string[] _fileNames = { "jpeg-baseline.dcm", "CT-MONO2-8-abdo", "US1_J2KI" };
  21. private int _counter;
  22. private ImageView _imageView;
  23. private TextView _textView;
  24. #endregion
  25. #region Methods
  26. protected override void OnCreate(Bundle bundle)
  27. {
  28. base.OnCreate(bundle);
  29. // Set our view from the "main" layout resource
  30. SetContentView(Resource.Layout.Main);
  31. _imageView = FindViewById<ImageView>(Resource.Id.MyImageView);
  32. _textView = FindViewById<TextView>(Resource.Id.MyTextView);
  33. Display(_fileNames[_counter]);
  34. }
  35. [Export("OnMyButtonClick")]
  36. public void OnMyButtonClick(View v)
  37. {
  38. ++_counter;
  39. if (_counter >= _fileNames.Length) _counter = 0;
  40. Display(_fileNames[_counter]);
  41. }
  42. private void Display(string fileName)
  43. {
  44. try
  45. {
  46. // Read and render DICOM image
  47. Bitmap bitmap;
  48. string dump;
  49. using (var stream = Assets.Open(fileName))
  50. using (var inner = new MemoryStream())
  51. {
  52. stream.CopyTo(inner);
  53. inner.Seek(0, SeekOrigin.Begin);
  54. var dicomFile = DicomFile.Open(inner);
  55. var dicomImage = new DicomImage(dicomFile.Dataset);
  56. bitmap = dicomImage.RenderImage().AsBitmap();
  57. dump = dicomFile.WriteToString();
  58. }
  59. // Draw rendered image in image view
  60. _imageView.SetImageBitmap(bitmap);
  61. // Display dump
  62. _textView.Text = dump;
  63. }
  64. catch (Exception e)
  65. {
  66. Toast.MakeText(ApplicationContext, e.Message, ToastLength.Long).Show();
  67. }
  68. }
  69. #endregion
  70. }
  71. }