Exemplo n.º 1
0
        public void TestRotationConstraints()
        {
            SynchronizationContext oldContext = SynchronizationContext.Current;

            if (oldContext == null)
            {
                SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());
            }
            try
            {
                CompositeGraphic      sceneGraph     = CreateTestSceneGraph();
                CompositeImageGraphic imageComposite = (CompositeImageGraphic)sceneGraph.Graphics[0];
                ImageGraphic          image          = (ImageGraphic)imageComposite.Graphics[0];
                CompositeGraphic      primitiveOwner = (CompositeGraphic)imageComposite.Graphics[1];
                Graphic primitive = (Graphic)primitiveOwner.Graphics[0];

                RoiGraphic roiGraphic = (RoiGraphic)imageComposite.Graphics[2];

                try
                {
                    sceneGraph.SpatialTransform.RotationXY     = 90;
                    imageComposite.SpatialTransform.RotationXY = 90;
                    primitiveOwner.SpatialTransform.RotationXY = 10;
                    primitive.SpatialTransform.RotationXY      = -20;
                }
                catch (Exception)
                {
                    Assert.Fail("These operations should not throw an exception!");
                }

                Matrix cumulativeTransform;
                try
                {
                    imageComposite.SpatialTransform.RotationXY = 30;
                    //should throw; no non-90 degree rotations allowed on an image
                    cumulativeTransform = image.SpatialTransform.CumulativeTransform;
                    Assert.Fail("expected exception not thrown!");
                }
                catch (ArgumentException)
                {
                    imageComposite.SpatialTransform.RotationXY = 90;
                }

                roiGraphic.SpatialTransform.RotationXY = 100;
                //should throw; no rotation allowed on a roi
                cumulativeTransform = roiGraphic.SpatialTransform.CumulativeTransform;
            }
            finally
            {
                if (oldContext != SynchronizationContext.Current)
                {
                    SynchronizationContext.SetSynchronizationContext(oldContext);
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// Creates a spatial transform for a 384x512 image (i.e. 512 rows, 384 columns) with the specified pixel spacing and/or pixel aspect ratio.
        /// </summary>
        private static ImageSpatialTransform CreateTransform(double pixelSpacingX, double pixelSpacingY, double pixelAspectRatioX, double pixelAspectRatioY)
        {
            CompositeImageGraphic graphic = new CompositeImageGraphic(512, 384, pixelSpacingX, pixelSpacingY, pixelAspectRatioX, pixelAspectRatioY);
            GrayscaleImageGraphic image   = new GrayscaleImageGraphic(512, 384);

            graphic.Graphics.Add(image);

            ImageSpatialTransform transform = (ImageSpatialTransform)graphic.SpatialTransform;

            transform.ClientRectangle = new Rectangle(0, 0, 384, 512);
            return(transform);
        }
Exemplo n.º 3
0
        /// <summary>
        /// Creates a spatial transform for a 384x512 image (i.e. 512 rows, 384 columns).
        /// </summary>
        private static ImageSpatialTransform CreateTransform()
        {
            CompositeImageGraphic graphic = new CompositeImageGraphic(512, 384);
            GrayscaleImageGraphic image   = new GrayscaleImageGraphic(512, 384);

            graphic.Graphics.Add(image);

            ImageSpatialTransform transform = (ImageSpatialTransform)graphic.SpatialTransform;

            transform.ClientRectangle = new Rectangle(0, 0, 384, 512);
            return(transform);
        }
Exemplo n.º 4
0
        public void DestinationToSourceRoundtrip()
        {
            // be sure to covert back and forth
            CompositeImageGraphic graphic   = new CompositeImageGraphic(3062, 3732);
            ImageSpatialTransform transform = (ImageSpatialTransform)graphic.SpatialTransform;

            transform.ClientRectangle = new Rectangle(6, 6, 493, 626);

            PointF dstPt1 = new Point(100, 200);
            PointF srcPt  = transform.ConvertToSource(dstPt1);

            PointF dstPt2 = transform.ConvertToDestination(srcPt);

            Assert.IsTrue(FloatComparer.AreEqual(dstPt1, dstPt2));
        }
        private void CreateImageLayer(ImageTypes imageType)
        {
            if (imageType == ImageTypes.Mono16)
            {
                _image = new GrayscaleImageGraphic(_srcHeight, _srcWidth, 16, 16, 15, false, false, 1.9, 3, new byte[2 * _srcWidth * _srcHeight]);
            }
            else if (imageType == ImageTypes.Mono8)
            {
                _image = new GrayscaleImageGraphic(_srcHeight, _srcWidth, 8, 8, 7, false, false, 1.0, 0, new byte[_srcWidth * _srcHeight]);
            }
            if (imageType == ImageTypes.Mono16Signed)
            {
                _image = new GrayscaleImageGraphic(_srcHeight, _srcWidth, 16, 16, 15, true, false, 2.0, -630, new byte[2 * _srcWidth * _srcHeight]);
            }
            else if (imageType == ImageTypes.Mono8Signed)
            {
                _image = new GrayscaleImageGraphic(_srcHeight, _srcWidth, 8, 8, 7, true, false, 0.5, 4, new byte[_srcWidth * _srcHeight]);
            }
            else
            {
                _image = new ColorImageGraphic(_srcHeight, _srcWidth, new byte[4 * _srcWidth * _srcHeight]);
            }

            if (_image is GrayscaleImageGraphic)
            {
                (_image as IColorMapInstaller).InstallColorMap(new GrayscaleColorMap());
            }

            _containerGraphic = new CompositeImageGraphic(_image.Rows, _image.Columns);
            _containerGraphic.Graphics.Add(_image);

            ImageSpatialTransform transform = (ImageSpatialTransform)_containerGraphic.SpatialTransform;

            transform.Initialize();
            transform.ClientRectangle = new Rectangle(0, 0, _dstWidth, _dstHeight);
            transform.ScaleToFit      = _scaleToFit;
            transform.Scale           = _scale;
            transform.FlipX           = _flipHorizontal;
            transform.FlipY           = _flipVertical;
            transform.RotationXY      = _rotation;
            transform.TranslationX    = _translationX;
            transform.TranslationY    = _translationY;
        }
Exemplo n.º 6
0
        public void CumulativeTransform()
        {
            //this will cause a non-1:1 scale in y
            CompositeImageGraphic composite = new CompositeImageGraphic(512, 384, 0, 0, 3, 4);
            ImageSpatialTransform transform = (ImageSpatialTransform)composite.SpatialTransform;

            transform.ClientRectangle = new Rectangle(0, 0, 384, 512);
            transform.ScaleToFit      = false;
            transform.Scale           = 2;

            CompositeGraphic graphic = new CompositeGraphic();

            composite.Graphics.Add(graphic);
            graphic.SpatialTransform.RotationXY = 30;

            Assert.AreEqual(graphic.SpatialTransform.Transform.Elements[0], 0.8660, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.Transform.Elements[1], 0.5, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.Transform.Elements[2], -0.5, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.Transform.Elements[3], 0.866, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.CumulativeTransform.Elements[0], 1.7321, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.CumulativeTransform.Elements[1], 1.3333, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.CumulativeTransform.Elements[2], -1, 0.0001F);
            Assert.AreEqual(graphic.SpatialTransform.CumulativeTransform.Elements[3], 2.3094, 0.0001F);
        }