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(); } } }
public override bool ContainsScreenCoordinate(Vector2 pos) { return(AbsoluteDrawRect.Contains(pos)); }