コード例 #1
0
ファイル: NacreViewRenderer.cs プロジェクト: idkiller/Nacre
 protected override void UpdateLayout()
 {
     base.UpdateLayout();
     formsGeometry = Control.Geometry;
     Console.WriteLine($"formsGeometry = {formsGeometry}");
     UpdateCanvasSize(formsGeometry);
 }
コード例 #2
0
ファイル: NacreViewRenderer.cs プロジェクト: idkiller/Nacre
        void UpdateCanvasSize(ElmSharp.Rect rect)
        {
            if (Element.Batched)
            {
                return;
            }

            double left   = 0;
            double top    = 0;
            double right  = 0;
            double bottom = 0;

            foreach (var shadow in Self.Shadows)
            {
                if (shadow.Inset)
                {
                    continue;
                }
                var spreadSize = shadow.BlurRadius * 2 + shadow.SpreadRadius;
                var sl         = shadow.OffsetX - spreadSize;
                var sr         = shadow.OffsetX + spreadSize;
                var st         = shadow.OffsetY - spreadSize;
                var sb         = shadow.OffsetY + spreadSize;
                if (left > sl)
                {
                    left = sl;
                }
                if (top > st)
                {
                    top = st;
                }
                if (right < sr)
                {
                    right = sr;
                }
                if (bottom < sb)
                {
                    bottom = sb;
                }
            }

            left   -= Self.Border.LeftWidth;
            top    -= Self.Border.TopWidth;
            right  += Self.Border.RightWidth;
            bottom += Self.Border.BottomWidth;

            var canvasGeometry = new ElmSharp.Rect(rect.X + (int)left, rect.Y + (int)top, rect.Width + (int)right - (int)left, rect.Height + (int)bottom - (int)top);

            if (canvasView != null)
            {
                canvasView.Geometry = canvasGeometry;
                canvasView.Invalidate();
            }

            if (debugBox != null)
            {
                debugBox.Geometry = canvasView.Geometry;
            }
        }
コード例 #3
0
        void UpdateShadowGeometry()
        {
            var geometry = NativeView.Geometry;

            if (ShadowElement.Content != null)
            {
                var contentNativeView = Platform.GetOrCreateRenderer(ShadowElement.Content)?.NativeView;
                if (contentNativeView != null)
                {
                    geometry = contentNativeView.Geometry;
                }
            }
            double left             = 0;
            double top              = 0;
            double right            = 0;
            double bottom           = 0;
            var    scaledOffsetX    = Forms.ConvertToScaledPixel(ShadowElement.ShadowOffsetX);
            var    scaledOffsetY    = Forms.ConvertToScaledPixel(ShadowElement.ShadowOffsetY);
            var    scaledBlurRadius = Forms.ConvertToScaledPixel(ShadowElement.ShadowBlurRadius);
            var    spreadSize       = scaledBlurRadius * 3;
            var    sl = scaledOffsetX - spreadSize;
            var    sr = scaledOffsetX + spreadSize;
            var    st = scaledOffsetY - spreadSize;
            var    sb = scaledOffsetY + spreadSize;

            if (left > sl)
            {
                left = sl;
            }
            if (top > st)
            {
                top = st;
            }
            if (right < sr)
            {
                right = sr;
            }
            if (bottom < sb)
            {
                bottom = sb;
            }

            var canvasGeometry = new ElmSharp.Rect(
                geometry.X + (int)left,
                geometry.Y + (int)top,
                geometry.Width + (int)right - (int)left,
                geometry.Height + (int)bottom - (int)top);

            if (_shadowCanvasView != null)
            {
                _shadowCanvasView.Geometry = canvasGeometry;
                _shadowCanvasView.Invalidate();
            }
        }
コード例 #4
0
        void OnLayout()
        {
            var x     = Control.Geometry.X + horizontalPadding;
            var y     = Control.Geometry.Y;
            var w     = (int)(Control.Geometry.Width - (horizontalPadding * 3)) / 2;
            var h     = Control.Geometry.Height;
            var rectL = new ERect(x, y, w, h);

            _borderL.Draw(rectL);
            _buttonL.Geometry = rectL;

            var x2    = Control.Geometry.X + w + (horizontalPadding * 2);
            var rectR = new ERect(x2, y, w, h);

            _borderR.Draw(rectR);
            _buttonR.Geometry = rectR;
        }
コード例 #5
0
 public static Rectangle ToDP(this ERect rect)
 {
     return(new Rectangle(Forms.ConvertToScaledDP(rect.X), Forms.ConvertToScaledDP(rect.Y), Forms.ConvertToScaledDP(rect.Width), Forms.ConvertToScaledDP(rect.Height)));
 }
コード例 #6
0
 public static Rectangle ToDP(this ERect rect)
 {
     return(new Rectangle(System.Maui.Maui.ConvertToScaledDP(rect.X), System.Maui.Maui.ConvertToScaledDP(rect.Y), System.Maui.Maui.ConvertToScaledDP(rect.Width), System.Maui.Maui.ConvertToScaledDP(rect.Height)));
 }
コード例 #7
0
 public static Rect ToCommon(this ERect rect)
 {
     return(new Rect(rect.X, rect.Y, rect.Width, rect.Height));
 }
コード例 #8
0
 public static MRect ToMultimediaRectangle(this ERect rect)
 {
     return(new MRect(rect.X, rect.Y, rect.Width, rect.Height));
 }
コード例 #9
0
 public static Rectangle ToMultimedia(this ElmSharp.Rect rect)
 {
     return(new Rectangle(rect.X, rect.Y, rect.Width, rect.Height));
 }
コード例 #10
0
 public static Rectangle ToSystemRectangle(this ERect rect) =>
 new Rectangle(rect.Left, rect.Top, rect.Width, rect.Height);
コード例 #11
0
ファイル: DPExtensions.cs プロジェクト: sung-su/maui
 public static Rect ToDP(this ERect rect)
 {
     return(new Rect(ConvertToScaledDP(rect.X), ConvertToScaledDP(rect.Y), ConvertToScaledDP(rect.Width), ConvertToScaledDP(rect.Height)));
 }