当前位置: 首页>>代码示例>>C#>>正文


C# Rect.Offset方法代码示例

本文整理汇总了C#中Rect.Offset方法的典型用法代码示例。如果您正苦于以下问题:C# Rect.Offset方法的具体用法?C# Rect.Offset怎么用?C# Rect.Offset使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Rect的用法示例。


在下文中一共展示了Rect.Offset方法的5个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C#代码示例。

示例1: BasicTransformation

        public void BasicTransformation()
        {
            Rect original = new Rect(1, 2, 3, 4);
            Rect originalF = new Rect(1.4f, 2.4f, 3.4f, 4.4f);

            // Transform operations should always return copies
            original.Scale(2.5f, 2.5f);
            original.Round();
            original.Offset(1.5f, 1.5f);
            original.Ceiling();
            original.Transform(2.5f, 2.5f);
            original.Floor();
            Assert.AreEqual(original, new Rect(1, 2, 3, 4));

            // Test some basic transformations
            Assert.AreEqual(new Rect(1, 2, 6, 8), original.Scale(2, 2));
            Assert.AreEqual(new Rect(3, 4, 3, 4), original.Offset(2, 2));
            Assert.AreEqual(new Rect(2, 4, 6, 8), original.Transform(2, 2));
            Assert.AreEqual(new Rect(1, 2, 3, 4), originalF.Round());
            Assert.AreEqual(new Rect(1, 2, 3, 4), originalF.Floor());
            Assert.AreEqual(new Rect(2, 3, 4, 5), originalF.Ceiling());

            // Check normalizing
            Assert.AreEqual(new Rect(1, 2, 3, 4), new Rect(4, 6, -3, -4).Normalize());
        }
开发者ID:gitMaxim,项目名称:duality,代码行数:25,代码来源:RectTest.cs

示例2: IntersectionRect

        public void IntersectionRect(int x, int y, int w, int h)
        {
            Rect rect = new Rect(x, y, w, h);
            Rect norm = rect.Normalize();

            // Intersection with self and offset-variants
            Assert.AreEqual(norm, rect.Intersection(rect));
            Assert.AreEqual(new Rect(norm.X + 1, norm.Y    , norm.W - 1, norm.H    ), rect.Intersection(rect.Offset(1, 0)));
            Assert.AreEqual(new Rect(norm.X    , norm.Y    , norm.W - 1, norm.H    ), rect.Intersection(rect.Offset(-1, 0)));
            Assert.AreEqual(new Rect(norm.X    , norm.Y + 1, norm.W    , norm.H - 1), rect.Intersection(rect.Offset(0, 1)));
            Assert.AreEqual(new Rect(norm.X    , norm.Y    , norm.W    , norm.H - 1), rect.Intersection(rect.Offset(0, -1)));

            // Intersection with corners
            Assert.AreEqual(new Rect(rect.TopLeft.X        , rect.TopLeft.Y        , 1, 1), rect.Intersection(rect.TopLeft.X - 1    , rect.TopLeft.Y - 1    , 2, 2));
            Assert.AreEqual(new Rect(rect.TopRight.X - 1   , rect.TopRight.Y       , 1, 1), rect.Intersection(rect.TopRight.X - 1   , rect.TopRight.Y - 1   , 2, 2));
            Assert.AreEqual(new Rect(rect.BottomLeft.X     , rect.BottomLeft.Y - 1 , 1, 1), rect.Intersection(rect.BottomLeft.X - 1 , rect.BottomLeft.Y - 1 , 2, 2));
            Assert.AreEqual(new Rect(rect.BottomRight.X - 1, rect.BottomRight.Y - 1, 1, 1), rect.Intersection(rect.BottomRight.X - 1, rect.BottomRight.Y - 1, 2, 2));

            // Non-intersection
            Assert.AreEqual(0, rect.Intersection(rect.Offset(MathF.Abs(rect.W), 0)).Area);
            Assert.AreEqual(0, rect.Intersection(rect.Offset(-MathF.Abs(rect.W), 0)).Area);
            Assert.AreEqual(0, rect.Intersection(rect.Offset(0, MathF.Abs(rect.H))).Area);
            Assert.AreEqual(0, rect.Intersection(rect.Offset(0, -MathF.Abs(rect.H))).Area);
        }
开发者ID:gitMaxim,项目名称:duality,代码行数:24,代码来源:RectTest.cs

示例3: Containment

        public void Containment()
        {
            Rect rect = new Rect(-5, -10, 10, 20);

            // A rect should contain all the points on its edge
            Assert.IsTrue(rect.Contains(rect.TopLeft));
            Assert.IsTrue(rect.Contains(rect.Top));
            Assert.IsTrue(rect.Contains(rect.TopRight));
            Assert.IsTrue(rect.Contains(rect.Left));
            Assert.IsTrue(rect.Contains(rect.Center));
            Assert.IsTrue(rect.Contains(rect.Right));
            Assert.IsTrue(rect.Contains(rect.BottomLeft));
            Assert.IsTrue(rect.Contains(rect.Bottom));
            Assert.IsTrue(rect.Contains(rect.BottomRight));

            // Points it shouldn't contain
            Assert.IsFalse(rect.Contains(rect.Left - Vector2.UnitX));
            Assert.IsFalse(rect.Contains(rect.Right + Vector2.UnitX));
            Assert.IsFalse(rect.Contains(rect.Top - Vector2.UnitY));
            Assert.IsFalse(rect.Contains(rect.Bottom + Vector2.UnitY));

            // A rect should contain itself, but not any offset variant
            Assert.IsTrue(rect.Contains(rect));
            Assert.IsFalse(rect.Contains(rect.Offset(1, 0)));
            Assert.IsFalse(rect.Contains(rect.Offset(-1, 0)));
            Assert.IsFalse(rect.Contains(rect.Offset(0, 1)));
            Assert.IsFalse(rect.Contains(rect.Offset(0, -1)));

            // It can contain a smaller rect, but not a bigger one
            Assert.IsTrue(rect.Contains(1, 2, 3, 4));
            Assert.IsFalse(rect.Contains(-6, -11, 12, 22));
            Assert.IsFalse(rect.Contains(-1, -11, 2, 22));
            Assert.IsFalse(rect.Contains(-6, -1, 12, 2));
        }
开发者ID:gitMaxim,项目名称:duality,代码行数:34,代码来源:RectTest.cs

示例4: IntersectionCheking

        public void IntersectionCheking(int x, int y, int w, int h)
        {
            Rect rect = new Rect(x, y, w, h);

            // Intersection with self and offset-variants
            Assert.IsTrue(rect.Intersects(rect));
            Assert.IsTrue(rect.Intersects(rect.Offset(1, 0)));
            Assert.IsTrue(rect.Intersects(rect.Offset(-1, 0)));
            Assert.IsTrue(rect.Intersects(rect.Offset(0, 1)));
            Assert.IsTrue(rect.Intersects(rect.Offset(0, -1)));

            // Intersection with crossing rect: Horizontal
            Assert.IsTrue(rect.Intersects(rect.MinX - 1, rect.MinY, rect.MaxX - rect.MinX + 2, rect.MaxY - rect.MinY));
            Assert.IsTrue(rect.Intersects(rect.MinX - 1, rect.MinY - 1, rect.MaxX - rect.MinX + 2, 2));
            Assert.IsTrue(rect.Intersects(rect.MinX - 1, rect.MaxY - 1, rect.MaxX - rect.MinX + 2, 2));

            // Intersection with crossing rect: Vertical
            Assert.IsTrue(rect.Intersects(rect.MinX, rect.MinY - 1, rect.MaxX - rect.MinX, rect.MaxY - rect.MinY + 2));
            Assert.IsTrue(rect.Intersects(rect.MinX - 1, rect.MinY - 1, 2, rect.MaxY - rect.MinY + 2));
            Assert.IsTrue(rect.Intersects(rect.MaxX - 1, rect.MinY - 1, 2, rect.MaxY - rect.MinY + 2));

            // Intersection with corners
            Assert.IsTrue(rect.Intersects(rect.TopLeft.X - 1, rect.TopLeft.Y - 1, 2, 2));
            Assert.IsTrue(rect.Intersects(rect.TopRight.X - 1, rect.TopRight.Y - 1, 2, 2));
            Assert.IsTrue(rect.Intersects(rect.BottomLeft.X - 1, rect.BottomLeft.Y - 1, 2, 2));
            Assert.IsTrue(rect.Intersects(rect.BottomRight.X - 1, rect.BottomRight.Y - 1, 2, 2));

            // Non-intersection
            Assert.IsFalse(rect.Intersects(rect.MinX - 2, rect.MinY, 1, rect.MaxY - rect.MinY));
            Assert.IsFalse(rect.Intersects(rect.MaxX + 2, rect.MinY, 1, rect.MaxY - rect.MinY));
            Assert.IsFalse(rect.Intersects(rect.MinX, rect.MinY - 2, rect.MaxX - rect.MinX, 1));
            Assert.IsFalse(rect.Intersects(rect.MinX, rect.MaxY + 2, rect.MaxX - rect.MinX, 1));

            // Non-intersection with corners
            Assert.IsFalse(rect.Intersects(rect.TopLeft.X - 2, rect.TopLeft.Y - 2, 1, 1));
            Assert.IsFalse(rect.Intersects(rect.TopRight.X + 2, rect.TopRight.Y - 2, 1, 1));
            Assert.IsFalse(rect.Intersects(rect.BottomLeft.X - 2, rect.BottomLeft.Y + 2, 1, 1));
            Assert.IsFalse(rect.Intersects(rect.BottomRight.X + 2, rect.BottomRight.Y + 2, 1, 1));
        }
开发者ID:gitMaxim,项目名称:duality,代码行数:39,代码来源:RectTest.cs

示例5: SetItemsHostInsetForChild

        private void SetItemsHostInsetForChild(int index, UIElement child, IContainItemStorage itemStorageProvider, bool isHorizontal)
        {
            Debug.Assert(!IsVSP45Compat, "SetItemsHostInset should not be called in VSP45-compat mode");

            // this only applies to a hierarchical element with a visible ItemsHost
            bool isChildHorizontal = isHorizontal;
            IHierarchicalVirtualizationAndScrollInfo virtualizingChild = GetVirtualizingChild(child, ref isChildHorizontal);
            Panel itemsHost = (virtualizingChild == null) ? null : virtualizingChild.ItemsHost;
            if (itemsHost == null || !itemsHost.IsVisible)
                return;

            // get the transformation from child coords to itemsHost coords
            GeneralTransform transform = child.TransformToDescendant(itemsHost);
            if (transform == null)
                return;     // when transform is undefined, ItemsHost is effectively invisible

            // build a rect (in child coords) describing the child's extended frame
            FrameworkElement fe = virtualizingChild as FrameworkElement;
            Thickness margin = (fe == null) ? new Thickness() : fe.Margin;
            Rect childRect = new Rect(new Point(), child.DesiredSize);
            childRect.Offset(-margin.Left, -margin.Top);

            // transform to itemsHost coords
            Rect itemsRect = transform.TransformBounds(childRect);

            // compute the desired inset, avoiding catastrophic cancellation errors
            Size itemsSize = itemsHost.DesiredSize;
            double left = DoubleUtil.AreClose(0, itemsRect.Left) ? 0 : -itemsRect.Left;
            double top = DoubleUtil.AreClose(0, itemsRect.Top) ? 0 : -itemsRect.Top;
            double right = DoubleUtil.AreClose(itemsSize.Width, itemsRect.Right) ? 0 : itemsRect.Right-itemsSize.Width;
            double bottom = DoubleUtil.AreClose(itemsSize.Height, itemsRect.Bottom) ? 0 : itemsRect.Bottom-itemsSize.Height;
            Thickness inset = new Thickness(left, top, right, bottom);


            // get the item to use as the key into items storage
            object item = GetItemFromContainer(child);
            if (item == DependencyProperty.UnsetValue)
            {
                Debug.Assert(false, "SetInset should only be called for a container");
                return;
            }

            // see whether inset is changing
            object box = itemStorageProvider.ReadItemValue(item, ItemsHostInsetProperty);
            bool changed = (box == null);
            bool remeasure = changed;
            if (!changed)
            {
                Thickness oldInset = (Thickness)box;
                changed = !(    DoubleUtil.AreClose(oldInset.Left, inset.Left) &&
                                DoubleUtil.AreClose(oldInset.Top, inset.Top ) &&
                                DoubleUtil.AreClose(oldInset.Right, inset.Right) &&
                                DoubleUtil.AreClose(oldInset.Bottom, inset.Bottom) );

                // only changes along the scrolling axis require a remeasure.
                // use a less stringent "AreClose" test;  experiments show that the
                // trailing inset can change due to roundoff error by an amount
                // that is larger than the tolerance in DoubleUtil, but not large
                // enough to warrant an expensive remeasure.
                remeasure = changed &&
                    (   (isHorizontal  && !(AreInsetsClose(oldInset.Left, inset.Left) &&
                                            AreInsetsClose(oldInset.Right, inset.Right)))
                     || (!isHorizontal && !(AreInsetsClose(oldInset.Top, inset.Top) &&
                                            AreInsetsClose(oldInset.Bottom, inset.Bottom))) );
            }

            if (changed)
            {
                // store the new inset
                itemStorageProvider.StoreItemValue(item, ItemsHostInsetProperty, inset);
                child.SetValue(ItemsHostInsetProperty, inset);
            }

            if (remeasure)
            {
                // re-measure the scrolling panel
                ItemsControl scrollingItemsControl = GetScrollingItemsControl(child);
                Panel scrollingPanel = (scrollingItemsControl == null) ? null : scrollingItemsControl.ItemsHost;
                if (scrollingPanel != null)
                {
                    VirtualizingStackPanel vsp = scrollingPanel as VirtualizingStackPanel;
                    if (vsp != null)
                    {
                        vsp.AnchoredInvalidateMeasure();
                    }
                    else
                    {
                        scrollingPanel.InvalidateMeasure();
                    }
                }
            }
        }
开发者ID:mind0n,项目名称:hive,代码行数:92,代码来源:VirtualizingStackPanel.cs


注:本文中的Rect.Offset方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。