Exemplo n.º 1
0
        public static UIImage ComposeButtonImage(UIImage thumbImage, float alpha = 1.0f)
        {
            // Get images and masks
            var maskImage      = thumbImage;
            var invertedImage  = thumbImage.Inverted();
            var thumbnailImage = thumbImage;

            if (invertedImage != null)
            {
                thumbnailImage = invertedImage;
            }

            // Compose a button image based on a white background and the inverted thumbnail image.
            UIGraphics.BeginImageContextWithOptions(maskImage.Size, false, 0.0f);

            var maskDrawRect  = new CGRect(CGPoint.Empty, maskImage.Size);
            var thumbDrawRect = new CGRect(CGPointExtensions.FromSize(maskImage.Size.Subtract(thumbImage.Size).Divide(2f)), thumbImage.Size);

            maskImage.Draw(maskDrawRect, CGBlendMode.Normal, alpha);
            thumbnailImage.Draw(thumbDrawRect, CGBlendMode.Normal, alpha);

            var composedImage = UIGraphics.GetImageFromCurrentImageContext();

            UIGraphics.EndImageContext();

            // Return results
            return(composedImage);
        }
Exemplo n.º 2
0
        public void UpdateTranslation(VirtualObject virtualObject, CGPoint midpoint)
        {
            if (!TranslationThresholdPassed)
            {
                var initialLocationToCurrentLocation = midpoint.Subtract(InitialMidpoint);
                var distanceFromStartLocation        = initialLocationToCurrentLocation.Length();

                // Check if the translate gesture has crossed the threshold.
                // If the user is already rotating and or scaling we use a bigger threshold.

                var threshold = TranslationThreshold;
                if (RotationThresholdPassed || TranslationThresholdPassed)
                {
                    threshold = TranslationThresholdHarder;
                }

                if (distanceFromStartLocation >= threshold)
                {
                    TranslationThresholdPassed = true;

                    var currentObjectLocation = CGPointExtensions.FromVector(SceneView.ProjectPoint(virtualObject.Position));
                    DragOffset = midpoint.Subtract(currentObjectLocation);
                }
            }

            if (TranslationThresholdPassed)
            {
                var offsetPos = midpoint.Subtract(DragOffset);
                manager.Translate(virtualObject, SceneView, offsetPos, false, true);
                LastUsedObject = virtualObject;
            }
        }