예제 #1
0
        internal virtual void SetComponentSize()
        {
            // TODO: Shrink AbsoluteOuterRect if Dock is set.
            // ...

            var oldDrawRect = AbsoluteDrawRect;

            Vector2 relSize;
            Vector2 relPos;

            // Draw

            relSize = AbsoluteOuterRect.Size - Margin.Size;
            relPos  = Margin.Min;

            RelatativeDrawRect = BoxHelper.FromSize(relPos, relSize);
            AbsoluteDrawRect   = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize);

            // Client

            relSize = AbsoluteOuterRect.Size - Margin.Size - Border.Size;
            relPos  = Margin.Min + Border.Min;

            RelatativeClientRect = BoxHelper.FromSize(relPos, relSize);
            AbsoluteClientRect   = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize);

            // Padding

            relSize = AbsoluteOuterRect.Size - Margin.Size - Border.Size - PaddingInternal.Size;
            relPos  = Margin.Min + Border.Min + PaddingInternal.Min;

            RelatativePaddingRect = BoxHelper.FromSize(relPos, relSize);
            AbsolutePaddingRect   = BoxHelper.FromSize(AbsoluteOuterRect.Min + relPos, relSize);

            if (!AbsoluteDrawRect.Size.Approximately(oldDrawRect.Size))
            {
                ResizeImage(DrawSize);
            }
            if (AbsoluteDrawRect != oldDrawRect)
            {
                SetRectangleScaled(AbsoluteDrawRect.ToRectangleF());
                if (!AbsoluteDrawRect.Size.Approximately(oldDrawRect.Size))
                {
                    OnResized();
                }
            }
        }
예제 #2
0
 public override bool ContainsScreenCoordinate(Vector2 pos)
 {
     return(AbsoluteDrawRect.Contains(pos));
 }