コード例 #1
0
ファイル: VSlider.cs プロジェクト: onamoni/edriven-gui
        protected override void UpdateSkinDisplayList()
        {
            if (null == Thumb || null == Track)
            {
                return;
            }

            var thumbRange = LayoutUtil.GetLayoutBoundsHeight(Track) - LayoutUtil.GetLayoutBoundsHeight(Thumb);
            var range      = Maximum - Minimum;

            // calculate new thumb position.
            var thumbPosTrackY = (range > 0) ? thumbRange - ((PendingValue - Minimum) / range) * thumbRange : 0;

            // convert to parent's coordinates.
            var thumbPos        = Track.LocalToGlobal(new Point(0, thumbPosTrackY));
            var thumbPosParentY = Thumb.Parent.GlobalToLocal(thumbPos).Y;

            Thumb.SetLayoutBoundsPosition(LayoutUtil.GetLayoutBoundsX(Thumb), Mathf.Round(thumbPosParentY));
        }
コード例 #2
0
        //---------------------------------
        //  Utility methods for subclasses
        //---------------------------------

        /**
         *
         *
         * Utility method to calculate a skin part's position relative to our component.
         *
         * Param: part The skin part instance to obtain coordinates of.
         *
         * Returns: The component relative position of the part.
         */
        /// <summary>
        ///
        /// </summary>
        /// <param name="part"></param>
        /// <returns></returns>
        protected Point GetSkinPartPosition(IVisualElement part)
        {
            return((null == part || null == part.Parent) ? new Point(0, 0) :
                   GlobalToLocal(part.Parent.LocalToGlobal(new Point(LayoutUtil.GetLayoutBoundsX((InvalidationManagerClient)part), LayoutUtil.GetLayoutBoundsY((InvalidationManagerClient)part)))));
        }