UIElement3D Class

UIElement3D is a base class for WPF core level implementations building on Windows Presentation Foundation (WPF) elements and basic presentation characteristics.

Namespace:  System.Windows
Assembly:  PresentationCore (in PresentationCore.dll)

public abstract class UIElement3D : Visual3D, 
	IInputElement

The UIElement3D type exposes the following members.

  NameDescription
Protected methodUIElement3DInitializes a new instance of the UIElement3D class.
Top

  NameDescription
Public propertyAllowDropGets or sets a value indicating whether this element can be used as the target of a drag-and-drop operation.
Public propertyAreAnyTouchesCapturedGets a value that indicates whether at least one touch is captured to this element.
Public propertyAreAnyTouchesCapturedWithinGets a value that indicates whether at least one touch is captured to this element or to any child elements in its visual tree.
Public propertyAreAnyTouchesDirectlyOverGets a value that indicates whether at least one touch is pressed over this element.
Public propertyAreAnyTouchesOverGets a value that indicates whether at least one touch is pressed over this element or any child elements in its visual tree.
Public propertyCommandBindingsGets a collection of CommandBinding objects associated with this element.
Public propertyDependencyObjectTypeGets the DependencyObjectType that wraps the CLR type of this instance.  (Inherited from DependencyObject.)
Public propertyDispatcherGets the Dispatcher this DispatcherObject is associated with. (Inherited from DispatcherObject.)
Public propertyFocusableGets or sets a value that indicates whether the element can receive focus.
Public propertyHasAnimatedPropertiesGets a value that indicates whether this Visual3D has any animated properties. (Inherited from Visual3D.)
Public propertyInputBindings Gets the collection of input bindings associated with this element.
Public propertyIsEnabledGets or sets a value indicating whether this element is enabled in the user interface (UI).
Protected propertyIsEnabledCoreGets a value that becomes the return value of IsEnabled in derived classes.
Public propertyIsFocusedGets a value that determines whether this element has logical focus.
Public propertyIsHitTestVisibleGets or sets a value that declares whether this element can possibly be returned as a hit test result from some portion of its rendered content.
Public propertyIsInputMethodEnabledGets a value indicating whether an input method system, such as an Input Method Editor (IME), is enabled for processing the input to this element.
Public propertyIsKeyboardFocusedGets a value indicating whether this element has keyboard focus.
Public propertyIsKeyboardFocusWithinGets a value indicating whether keyboard focus is anywhere within the element or its visual tree child elements.
Public propertyIsMouseCapturedGets a value indicating whether the mouse is captured to this element.
Public propertyIsMouseCaptureWithinGets a value that determines whether mouse capture is held by this element or by child elements in its visual tree.
Public propertyIsMouseDirectlyOverGets a value that indicates whether the position of the mouse pointer corresponds to hit test results, which take element compositing into account.
Public propertyIsMouseOverGets a value indicating whether the mouse pointer is located over this element (including child elements in the visual tree).
Public propertyIsSealedGets a value that indicates whether this instance is currently sealed (read-only). (Inherited from DependencyObject.)
Public propertyIsStylusCapturedGets a value indicating whether the stylus is captured by this element.
Public propertyIsStylusCaptureWithinGets a value that determines whether stylus capture is held by this element, or an element within the element bounds and its visual tree.
Public propertyIsStylusDirectlyOverGets a value that indicates whether the stylus position corresponds to hit test results, which take element compositing into account.
Public propertyIsStylusOver Gets a value indicating whether the stylus cursor is located over this element (including visual child elements).
Public propertyIsVisibleGets a value indicating whether this element is visible in the user interface (UI).
Public propertyTouchesCapturedGets all touch devices that are captured to this element.
Public propertyTouchesCapturedWithinGets all touch devices that are captured to this element or any child elements in its visual tree.
Public propertyTouchesDirectlyOverGets all touch devices that are over this element.
Public propertyTouchesOverGets all touch devices that are over this element or any child elements in its visual tree.
Public propertyTransformGets or sets the transformation that is applied to the 3-D object. (Inherited from Visual3D.)
Public propertyVisibilityGets or sets the user interface (UI) visibility of this element.
Protected propertyVisual3DChildrenCountGets the number of child elements for the Visual3D object. (Inherited from Visual3D.)
Protected propertyVisual3DModelGets or sets the Model3D object to render. (Inherited from Visual3D.)
Top

  NameDescription
Public methodAddHandler(RoutedEvent, Delegate)Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element.
Public methodAddHandler(RoutedEvent, Delegate, Boolean)Adds a routed event handler for a specified routed event, adding the handler to the handler collection on the current element. Specify handledEventsToo as true to have the provided handler be invoked for routed event that had already been marked as handled by another element along the event route.
Public methodAddToEventRouteAdds handlers to the specified EventRoute for the current UIElement3D event handler collection.
Protected methodAddVisual3DChildDefines the parent-child relationship between two 3-D visuals. (Inherited from Visual3D.)
Public methodApplyAnimationClock(DependencyProperty, AnimationClock)Applies the effect of a given AnimationClock to a given dependency property. (Inherited from Visual3D.)
Public methodApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)Applies the effect of a given AnimationClock to a given dependency property. The effect of the new AnimationClock on any current animations is determined by the value of the handoffBehavior parameter. (Inherited from Visual3D.)
Public methodBeginAnimation(DependencyProperty, AnimationTimeline)Initiates an animation sequence for the DependencyProperty object, based on the specified AnimationTimeline. (Inherited from Visual3D.)
Public methodBeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)Initiates an animation sequence for the DependencyProperty object, based on both the specified AnimationTimeline and HandoffBehavior. (Inherited from Visual3D.)
Public methodCaptureMouseAttempts to force capture of the mouse to this element.
Public methodCaptureStylus Attempts to force capture of the stylus to this element.
Public methodCaptureTouchAttempts to force capture of a touch to this element.
Public methodCheckAccessDetermines whether the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Public methodClearValue(DependencyProperty)Clears the local value of a property. The property to be cleared is specified by a DependencyProperty identifier. (Inherited from DependencyObject.)
Public methodClearValue(DependencyPropertyKey)Clears the local value of a read-only property. The property to be cleared is specified by a DependencyPropertyKey. (Inherited from DependencyObject.)
Public methodCoerceValueCoerces the value of the specified dependency property. This is accomplished by invoking any CoerceValueCallback function specified in property metadata for the dependency property as it exists on the calling DependencyObject. (Inherited from DependencyObject.)
Public methodEqualsDetermines whether a provided DependencyObject is equivalent to the current DependencyObject. (Inherited from DependencyObject.)
Protected methodFinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public methodFindCommonVisualAncestorReturns the common ancestor of the visual object and another specified visual object. (Inherited from Visual3D.)
Public methodFocus Attempts to set the logical focus on this element.
Public methodGetAnimationBaseValueRetrieves the base value of the specified DependencyProperty object. (Inherited from Visual3D.)
Public methodGetHashCodeGets a hash code for this DependencyObject. (Inherited from DependencyObject.)
Public methodGetLocalValueEnumeratorCreates a specialized enumerator for determining which dependency properties have locally set values on this DependencyObject. (Inherited from DependencyObject.)
Public methodGetTypeGets the Type of the current instance. (Inherited from Object.)
Protected methodGetUIParentCoreWhen overridden in a derived class, returns an alternative user interface (UI) parent for this element if no visual parent exists.
Public methodGetValueReturns the current effective value of a dependency property on this instance of a DependencyObject. (Inherited from DependencyObject.)
Protected methodGetVisual3DChildReturns the specified Visual3D in the parent Visual3DCollection. (Inherited from Visual3D.)
Public methodInvalidateModelInvalidates the model that represents the element.
Public methodInvalidatePropertyRe-evaluates the effective value for the specified dependency property (Inherited from DependencyObject.)
Public methodIsAncestorOfDetermines whether the visual object is an ancestor of the descendant visual object. (Inherited from Visual3D.)
Public methodIsDescendantOfDetermines whether the visual object is a descendant of the ancestor visual object. (Inherited from Visual3D.)
Protected methodMemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public methodMoveFocusAttempts to move focus from this element to another element. The direction to move focus is specified by a guidance direction, which is interpreted within the organization of the visual parent for this element.
Protected methodOnAccessKey Provides class handling for when an access key that is meaningful for this element is invoked.
Protected methodOnCreateAutomationPeerReturns class-specific AutomationPeer implementations for the Windows Presentation Foundation (WPF) infrastructure.
Protected methodOnDragEnterInvoked when an unhandled DragDrop.DragEnter attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnDragLeaveInvoked when an unhandled DragDrop.DragLeave attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnDragOverInvoked when an unhandled DragDrop.DragOver attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnDropInvoked when an unhandled DragDrop.Drop attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnGiveFeedbackInvoked when an unhandled DragDrop.GiveFeedback attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnGotFocusRaises the GotFocus routed event by using the event data provided.
Protected methodOnGotKeyboardFocusInvoked when an unhandled Keyboard.GotKeyboardFocus attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnGotMouseCaptureInvoked when an unhandled Mouse.GotMouseCapture attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnGotStylusCaptureInvoked when an unhandled Stylus.GotStylusCapture attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnGotTouchCaptureProvides class handling for the GotTouchCapture routed event that occurs when a touch is captured to this element.
Protected methodOnIsKeyboardFocusedChangedInvoked when an unhandled IsKeyboardFocusedChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnIsKeyboardFocusWithinChangedInvoked just before the IsKeyboardFocusWithinChanged event is raised by this element. Implement this method to add class handling for this event.
Protected methodOnIsMouseCapturedChangedInvoked when an unhandled IsMouseCapturedChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnIsMouseCaptureWithinChangedInvoked when an unhandled IsMouseCaptureWithinChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnIsMouseDirectlyOverChangedInvoked when an unhandled IsMouseDirectlyOverChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnIsStylusCapturedChangedInvoked when an unhandled IsStylusCapturedChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnIsStylusCaptureWithinChangedInvoked when an unhandled IsStylusCaptureWithinChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnIsStylusDirectlyOverChangedInvoked when an unhandled IsStylusDirectlyOverChanged event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnKeyDownInvoked when an unhandled Keyboard.KeyDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnKeyUpInvoked when an unhandled Keyboard.KeyUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnLostFocusRaises the LostFocus routed event by using the event data that is provided.
Protected methodOnLostKeyboardFocusInvoked when an unhandled Keyboard.LostKeyboardFocus attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnLostMouseCaptureInvoked when an unhandled Mouse.LostMouseCapture attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnLostStylusCaptureInvoked when an unhandled Stylus.LostStylusCapture attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnLostTouchCaptureProvides class handling for the LostTouchCapture routed event that occurs when this element loses a touch capture.
Protected methodOnMouseDownInvoked when an unhandled Mouse.MouseDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnMouseEnterInvoked when an unhandled Mouse.MouseEnter attached event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnMouseLeaveInvoked when an unhandled Mouse.MouseLeave attached event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnMouseLeftButtonDownInvoked when an unhandled MouseLeftButtonDown routed event is raised on this element. Implement this method to add class handling for this event.
Protected methodOnMouseLeftButtonUpInvoked when an unhandled MouseLeftButtonUp routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnMouseMoveInvoked when an unhandled Mouse.MouseMove attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnMouseRightButtonDownInvoked when an unhandled MouseRightButtonDown routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnMouseRightButtonUpInvoked when an unhandled MouseRightButtonUp routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnMouseUpInvoked when an unhandled Mouse.MouseUp routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnMouseWheelInvoked when an unhandled Mouse.MouseWheel attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewDragEnterInvoked when an unhandled DragDrop.PreviewDragEnter attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewDragLeaveInvoked when an unhandled DragDrop.PreviewDragLeave attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewDragOverInvoked when an unhandled DragDrop.PreviewDragOver attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewDropInvoked when an unhandled DragDrop.PreviewDrop attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewGiveFeedbackInvoked when an unhandled DragDrop.PreviewGiveFeedback attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewGotKeyboardFocusInvoked when an unhandled Keyboard.PreviewGotKeyboardFocus attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewKeyDownInvoked when an unhandled Keyboard.PreviewKeyDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewKeyUpInvoked when an unhandled Keyboard.PreviewKeyUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewLostKeyboardFocusInvoked when an unhandled Keyboard.PreviewLostKeyboardFocus attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseDownInvoked when an unhandled Mouse.PreviewMouseDown attached routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseLeftButtonDownInvoked when an unhandled PreviewMouseLeftButtonDown routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseLeftButtonUpInvoked when an unhandled PreviewMouseLeftButtonUp routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseMoveInvoked when an unhandled Mouse.PreviewMouseMove attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseRightButtonDownInvoked when an unhandled PreviewMouseRightButtonDown routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseRightButtonUpInvoked when an unhandled PreviewMouseRightButtonUp routed event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseUpInvoked when an unhandled Mouse.PreviewMouseUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewMouseWheelInvoked when an unhandled Mouse.PreviewMouseWheel attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewQueryContinueDragInvoked when an unhandled DragDrop.PreviewQueryContinueDrag attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusButtonDownInvoked when an unhandled Stylus.PreviewStylusButtonDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusButtonUpInvoked when an unhandled Stylus.PreviewStylusButtonUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusDownInvoked when an unhandled Stylus.PreviewStylusDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusInAirMoveInvoked when an unhandled Stylus.PreviewStylusInAirMove attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusInRangeInvoked when an unhandled Stylus.PreviewStylusInRange attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusMoveInvoked when an unhandled Stylus.PreviewStylusMove attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusOutOfRangeInvoked when an unhandled Stylus.PreviewStylusOutOfRange attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusSystemGestureInvoked when an unhandled Stylus.PreviewStylusSystemGesture attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewStylusUpInvoked when an unhandled Stylus.PreviewStylusUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewTextInputInvoked when an unhandled TextCompositionManager.PreviewTextInput attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnPreviewTouchDownProvides class handling for the PreviewTouchDown routed event that occurs when a touch presses this element.
Protected methodOnPreviewTouchMoveProvides class handling for the PreviewTouchMove routed event that occurs when a touch moves while inside this element.
Protected methodOnPreviewTouchUpProvides class handling for the PreviewTouchUp routed event that occurs when a touch is released inside this element.
Protected methodOnPropertyChangedInvoked whenever the effective value of any dependency property on this DependencyObject has been updated. The specific dependency property that changed is reported in the event data. (Inherited from DependencyObject.)
Protected methodOnQueryContinueDragInvoked when an unhandled DragDrop.QueryContinueDrag attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnQueryCursorInvoked when an unhandled Mouse.QueryCursor attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusButtonDownInvoked when an unhandled Stylus.StylusButtonDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusButtonUpInvoked when an unhandled Stylus.StylusButtonUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusDownInvoked when an unhandled Stylus.StylusDown attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusEnterInvoked when an unhandled Stylus.StylusEnter attached event is raised by this element. Implement this method to add class handling for this event.
Protected methodOnStylusInAirMoveInvoked when an unhandled Stylus.StylusInAirMove attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusInRangeInvoked when an unhandled Stylus.StylusInRange attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusLeaveInvoked when an unhandled Stylus.StylusLeave attached event is raised by this element. Implement this method to add class handling for this event.
Protected methodOnStylusMoveInvoked when an unhandled Stylus.StylusMove attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusOutOfRangeInvoked when an unhandled Stylus.StylusOutOfRange attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusSystemGestureInvoked when an unhandled Stylus.StylusSystemGesture attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnStylusUpInvoked when an unhandled Stylus.StylusUp attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnTextInputInvoked when an unhandled TextCompositionManager.TextInput attached event reaches an element in its route that is derived from this class. Implement this method to add class handling for this event.
Protected methodOnTouchDownProvides class handling for the TouchDown routed event that occurs when a touch presses inside this element.
Protected methodOnTouchEnterProvides class handling for the TouchEnter routed event that occurs when a touch moves from outside to inside the bounds of this element.
Protected methodOnTouchLeaveProvides class handling for the TouchLeave routed event that occurs when a touch moves from inside to outside the bounds of this element.
Protected methodOnTouchMoveProvides class handling for the TouchMove routed event that occurs when a touch moves while inside this element.
Protected methodOnTouchUpProvides class handling for the TouchUp routed event that occurs when a touch is released inside this element.
Protected methodOnUpdateModelParticipates in rendering operations when overridden in a derived class.
Protected methodOnVisualChildrenChangedCalled when the Visual3DCollection of the visual object is modified. (Inherited from Visual3D.)
Protected methodOnVisualParentChangedInvoked when the parent element of this UIElement3D reports a change to its underlying visual parent. (Overrides Visual3D.OnVisualParentChanged(DependencyObject).)
Public methodPredictFocusWhen overridden in a derived class, returns the element that would receive focus for a specified focus traversal direction, without actually moving focus to that element.
Public methodRaiseEventRaises a specific routed event. The RoutedEvent to be raised is identified within the RoutedEventArgs instance that is provided (as the RoutedEvent property of that event data).
Public methodReadLocalValueReturns the local value of a dependency property, if it exists. (Inherited from DependencyObject.)
Public methodReleaseAllTouchCapturesReleases all captured touch devices from this element.
Public methodReleaseMouseCapture Releases the mouse capture, if this element held the capture.
Public methodReleaseStylusCapture Releases the stylus device capture, if this element held the capture.
Public methodReleaseTouchCaptureAttempts to release the specified touch device from this element.
Public methodRemoveHandler Removes the specified routed event handler from this element.
Protected methodRemoveVisual3DChildRemoves the parent-child relationship between two 3-D visuals. (Inherited from Visual3D.)
Public methodSetCurrentValueSets the value of a dependency property without changing its value source. (Inherited from DependencyObject.)
Public methodSetValue(DependencyProperty, Object)Sets the local value of a dependency property, specified by its dependency property identifier. (Inherited from DependencyObject.)
Public methodSetValue(DependencyPropertyKey, Object)Sets the local value of a read-only dependency property, specified by the DependencyPropertyKey identifier of the dependency property. (Inherited from DependencyObject.)
Public methodShouldSerializeCommandBindingsReturns whether serialization processes should serialize the contents of the CommandBindings property on instances of this class.
Public methodShouldSerializeInputBindingsReturns whether serialization processes should serialize the contents of the InputBindings property on instances of this class.
Protected methodShouldSerializePropertyReturns a value that indicates whether serialization processes should serialize the value for the provided dependency property. (Inherited from DependencyObject.)
Public methodToStringReturns a string that represents the current object. (Inherited from Object.)
Public methodTransformToAncestor(Visual)Returns a transform that can be used to transform coordinates from this Visual3D object to the specified Visual ancestor of the object. (Inherited from Visual3D.)
Public methodTransformToAncestor(Visual3D)Returns a transform that can be used to transform coordinates from this Visual3D object to the specified Visual3D ancestor of the object. (Inherited from Visual3D.)
Public methodTransformToDescendantReturns a transform that can be used to transform coordinates from this Visual3D object to the specified Visual3D descent object. (Inherited from Visual3D.)
Public methodVerifyAccessEnforces that the calling thread has access to this DispatcherObject. (Inherited from DispatcherObject.)
Top

  NameDescription
Public eventDragEnterOccurs when the input system reports an underlying drag event with this element as the drag target.
Public eventDragLeaveOccurs when the input system reports an underlying drag event with this element as the drag origin.
Public eventDragOverOccurs when the input system reports an underlying drag event with this element as the potential drop target.
Public eventDropOccurs when the input system reports an underlying drop event with this element as the drop target.
Public eventFocusableChangedOccurs when the value of the Focusable property changes.
Public eventGiveFeedbackOccurs when the input system reports an underlying drag-and-drop event that involves this element.
Public eventGotFocusOccurs when this element gets logical focus.
Public eventGotKeyboardFocusOccurs when the keyboard is focused on this element.
Public eventGotMouseCaptureOccurs when this element captures the mouse.
Public eventGotStylusCaptureOccurs when this element captures the stylus.
Public eventGotTouchCaptureOccurs when a touch is captured to this element.
Public eventIsEnabledChangedOccurs when the value of the IsEnabled property on this element changes.
Public eventIsHitTestVisibleChangedOccurs when the value of the IsHitTestVisible dependency property changes on this element.
Public eventIsKeyboardFocusedChangedOccurs when the value of the IsKeyboardFocused property changes on this element.
Public eventIsKeyboardFocusWithinChangedOccurs when the value of the IsKeyboardFocusWithin property changes on this element.
Public eventIsMouseCapturedChangedOccurs when the value of the IsMouseCaptured property changes on this element.
Public eventIsMouseCaptureWithinChangedOccurs when the value of the IsMouseCaptureWithin property changes on this element.
Public eventIsMouseDirectlyOverChangedOccurs when the value of the IsMouseDirectlyOver property changes on this element.
Public eventIsStylusCapturedChangedOccurs when the value of the IsStylusCaptured property changes on this element.
Public eventIsStylusCaptureWithinChangedOccurs when the value of the IsStylusCaptureWithin property changes on this element.
Public eventIsStylusDirectlyOverChangedOccurs when the value of the IsStylusDirectlyOver property changes on this element.
Public eventIsVisibleChangedOccurs when the value of the IsVisible property changes on this element.
Public eventKeyDownOccurs when a key is pressed while the keyboard is focused on this element.
Public eventKeyUpOccurs when a key is released while the keyboard is focused on this element.
Public eventLostFocusOccurs when this element loses logical focus.
Public eventLostKeyboardFocusOccurs when the keyboard is no longer focused on this element.
Public eventLostMouseCaptureOccurs when this element loses mouse capture.
Public eventLostStylusCaptureOccurs when this element loses stylus capture.
Public eventLostTouchCaptureOccurs when this element loses a touch capture.
Public eventMouseDownOccurs when any mouse button is pressed while the pointer is over this element.
Public eventMouseEnterOccurs when the mouse pointer enters the bounds of this element.
Public eventMouseLeaveOccurs when the mouse pointer leaves the bounds of this element.
Public eventMouseLeftButtonDownOccurs when the left mouse button is pressed while the mouse pointer is over this element.
Public eventMouseLeftButtonUpOccurs when the left mouse button is released while the mouse pointer is over this element.
Public eventMouseMoveOccurs when the mouse pointer moves while over this element.
Public eventMouseRightButtonDownOccurs when the right mouse button is pressed while the mouse pointer is over this element.
Public eventMouseRightButtonUpOccurs when the right mouse button is released while the mouse pointer is over this element.
Public eventMouseUpOccurs when any mouse button is released over this element.
Public eventMouseWheelOccurs when the user rotates the mouse wheel while the mouse pointer is over this element.
Public eventPreviewDragEnterOccurs when the input system reports an underlying drag event with this element as the drag target.
Public eventPreviewDragLeaveOccurs when the input system reports an underlying drag event with this element as the drag origin.
Public eventPreviewDragOverOccurs when the input system reports an underlying drag event with this element as the potential drop target.
Public eventPreviewDropOccurs when the input system reports an underlying drop event with this element as the drop target.
Public eventPreviewGiveFeedbackOccurs when a drag-and-drop operation is started.
Public eventPreviewGotKeyboardFocusOccurs when the keyboard is focused on this element.
Public eventPreviewKeyDownOccurs when a key is pressed while the keyboard is focused on this element.
Public eventPreviewKeyUpOccurs when a key is released while the keyboard is focused on this element.
Public eventPreviewLostKeyboardFocusOccurs when the keyboard is no longer focused on this element.
Public eventPreviewMouseDownOccurs when any mouse button is pressed while the pointer is over this element.
Public eventPreviewMouseLeftButtonDownOccurs when the left mouse button is pressed while the mouse pointer is over this element.
Public eventPreviewMouseLeftButtonUpOccurs when the left mouse button is released while the mouse pointer is over this element.
Public eventPreviewMouseMoveOccurs when the mouse pointer moves while the mouse pointer is over this element.
Public eventPreviewMouseRightButtonDownOccurs when the right mouse button is pressed while the mouse pointer is over this element.
Public eventPreviewMouseRightButtonUpOccurs when the right mouse button is released while the mouse pointer is over this element.
Public eventPreviewMouseUpOccurs when any mouse button is released while the mouse pointer is over this element.
Public eventPreviewMouseWheelOccurs when the user rotates the mouse wheel while the mouse pointer is over this element.
Public eventPreviewQueryContinueDragOccurs when there is a change in the keyboard or mouse button state during a drag-and-drop operation.
Public eventPreviewStylusButtonDownOccurs when the stylus button is pressed while the pointer is over this element.
Public eventPreviewStylusButtonUpOccurs when the stylus button is released while the pointer is over this element.
Public eventPreviewStylusDownOccurs when the stylus touches the digitizer while it is over this element.
Public eventPreviewStylusInAirMoveOccurs when the stylus moves over an element without actually touching the digitizer.
Public eventPreviewStylusInRangeOccurs when the stylus is close enough to the digitizer to be detected, while over this element.
Public eventPreviewStylusMoveOccurs when the stylus moves while over the element. The stylus must move while being detected by the digitizer to raise this event, otherwise, PreviewStylusInAirMove is raised instead.
Public eventPreviewStylusOutOfRangeOccurs when the stylus is too far from the digitizer to be detected.
Public eventPreviewStylusSystemGestureOccurs when a user performs one of several stylus gestures.
Public eventPreviewStylusUpOccurs when the user raises the stylus off the digitizer while the stylus is over this element.
Public eventPreviewTextInputOccurs when this element gets text in a device-independent manner.
Public eventPreviewTouchDownOccurs when a finger touches the screen while the finger is over this element.
Public eventPreviewTouchMoveOccurs when a finger moves on the screen while the finger is over this element.
Public eventPreviewTouchUpOccurs when a finger is raised off of the screen while the finger is over this element.
Public eventQueryContinueDragOccurs when there is a change in the keyboard or mouse button state during a drag-and-drop operation.
Public eventQueryCursorOccurs when the cursor is requested to display. This event is raised on an element each time that the mouse pointer moves to a new location, which means the cursor object might need to be changed based on its new position.
Public eventStylusButtonDownOccurs when the stylus button is pressed while the pointer is over this element.
Public eventStylusButtonUpOccurs when the stylus button is released while the pointer is over this element.
Public eventStylusDownOccurs when the stylus touches the digitizer while the stylus is over this element.
Public eventStylusEnterOccurs when the stylus enters the bounds of this element.
Public eventStylusInAirMoveOccurs when the stylus moves over an element without actually touching the digitizer.
Public eventStylusInRangeOccurs when the stylus is close enough to the digitizer to be detected, while over this element.
Public eventStylusLeaveOccurs when the stylus leaves the bounds of the element.
Public eventStylusMoveOccurs when the stylus moves over this element. The stylus must move while on the digitizer to raise this event. Otherwise, StylusInAirMove is raised instead.
Public eventStylusOutOfRangeOccurs when the stylus is too far from the digitizer to be detected, while over this element.
Public eventStylusSystemGestureOccurs when a user performs one of several stylus gestures.
Public eventStylusUpOccurs when the user raises the stylus off the digitizer while it is over this element.
Public eventTextInputOccurs when this element gets text in a device-independent manner.
Public eventTouchDownOccurs when a finger touches the screen while the finger is over this element.
Public eventTouchEnterOccurs when a touch moves from outside to inside the bounds of this element.
Public eventTouchLeaveOccurs when a touch moves from inside to outside the bounds of this element.
Public eventTouchMoveOccurs when a finger moves on the screen while the finger is over this element.
Public eventTouchUpOccurs when a finger is raised off of the screen while the finger is over this element.
Top

  NameDescription
Public fieldStatic memberAllowDropPropertyIdentifies the AllowDrop dependency property.
Public fieldStatic memberAreAnyTouchesCapturedPropertyIdentifies the AreAnyTouchesCaptured dependency property.
Public fieldStatic memberAreAnyTouchesCapturedWithinPropertyIdentifies the AreAnyTouchesCapturedWithin dependency property.
Public fieldStatic memberAreAnyTouchesDirectlyOverPropertyIdentifies the AreAnyTouchesDirectlyOver dependency property.
Public fieldStatic memberAreAnyTouchesOverPropertyIdentifies the AreAnyTouchesOver dependency property.
Public fieldStatic memberDragEnterEventIdentifies the DragEnter routed event.
Public fieldStatic memberDragLeaveEventIdentifies the DragLeave routed event.
Public fieldStatic memberDragOverEventIdentifies the DragOver routed event.
Public fieldStatic memberDropEventIdentifies the Drop routed event.
Public fieldStatic memberFocusablePropertyIdentifies the Focusable dependency property.
Public fieldStatic memberGiveFeedbackEventIdentifies the GiveFeedback routed event.
Public fieldStatic memberGotFocusEventIdentifies the GotFocus routed event.
Public fieldStatic memberGotKeyboardFocusEventIdentifies the GotKeyboardFocus routed event.
Public fieldStatic memberGotMouseCaptureEventIdentifies the GotMouseCapture routed event.
Public fieldStatic memberGotStylusCaptureEventIdentifies the GotStylusCapture routed event.
Public fieldStatic memberGotTouchCaptureEventIdentifies the GotTouchCapture routed event.
Public fieldStatic memberIsEnabledPropertyIdentifies the IsEnabled dependency property.
Public fieldStatic memberIsFocusedPropertyIdentifies the IsFocused dependency property.
Public fieldStatic memberIsHitTestVisiblePropertyIdentifies the IsHitTestVisible  dependency property.
Public fieldStatic memberIsKeyboardFocusedPropertyIdentifies the IsKeyboardFocused dependency property.
Public fieldStatic memberIsKeyboardFocusWithinPropertyIdentifies the IsKeyboardFocusWithin dependency property.
Public fieldStatic memberIsMouseCapturedPropertyIdentifies the IsMouseCaptured dependency property.
Public fieldStatic memberIsMouseCaptureWithinPropertyIdentifies the IsMouseCaptureWithin dependency property.
Public fieldStatic memberIsMouseDirectlyOverPropertyIdentifies the IsMouseDirectlyOver dependency property.
Public fieldStatic memberIsMouseOverPropertyIdentifies the IsMouseOver dependency property.
Public fieldStatic memberIsStylusCapturedPropertyIdentifies the IsStylusCaptured dependency property.
Public fieldStatic memberIsStylusCaptureWithinPropertyIdentifies the IsStylusCaptureWithin dependency property.
Public fieldStatic memberIsStylusDirectlyOverPropertyIdentifies the IsStylusDirectlyOver dependency property.
Public fieldStatic memberIsStylusOverPropertyIdentifies the IsStylusOver dependency property.
Public fieldStatic memberIsVisiblePropertyIdentifies the IsVisible dependency property.
Public fieldStatic memberKeyDownEventIdentifies the KeyDown routed event.
Public fieldStatic memberKeyUpEventIdentifies the KeyUp routed event.
Public fieldStatic memberLostFocusEventIdentifies the LostFocus routed event.
Public fieldStatic memberLostKeyboardFocusEventIdentifies the LostKeyboardFocus routed event.
Public fieldStatic memberLostMouseCaptureEventIdentifies the LostMouseCapture routed event.
Public fieldStatic memberLostStylusCaptureEventIdentifies the LostStylusCapture routed event.
Public fieldStatic memberLostTouchCaptureEventIdentifies the LostTouchCapture routed event.
Public fieldStatic memberMouseDownEventIdentifies the MouseDown routed event.
Public fieldStatic memberMouseEnterEventIdentifies the MouseEnter routed event.
Public fieldStatic memberMouseLeaveEventIdentifies the MouseLeave routed event.
Public fieldStatic memberMouseLeftButtonDownEventIdentifies the MouseLeftButtonDown routed event.
Public fieldStatic memberMouseLeftButtonUpEventIdentifies the MouseLeftButtonUp routed event.
Public fieldStatic memberMouseMoveEventIdentifies the MouseMove routed event.
Public fieldStatic memberMouseRightButtonDownEventIdentifies the MouseRightButtonDown routed event.
Public fieldStatic memberMouseRightButtonUpEventIdentifies the MouseRightButtonUp routed event.
Public fieldStatic memberMouseUpEventIdentifies the MouseUp routed event.
Public fieldStatic memberMouseWheelEventIdentifies the MouseWheel routed event.
Public fieldStatic memberPreviewDragEnterEventIdentifies the PreviewDragEnter routed event.
Public fieldStatic memberPreviewDragLeaveEventIdentifies the PreviewDragLeave routed event.
Public fieldStatic memberPreviewDragOverEventIdentifies the PreviewDragOver routed event.
Public fieldStatic memberPreviewDropEventIdentifies the PreviewDrop routed event.
Public fieldStatic memberPreviewGiveFeedbackEventIdentifies the PreviewGiveFeedback routed event.
Public fieldStatic memberPreviewGotKeyboardFocusEventIdentifies the PreviewGotKeyboardFocus routed event.
Public fieldStatic memberPreviewKeyDownEventIdentifies the PreviewKeyDown routed event.
Public fieldStatic memberPreviewKeyUpEventIdentifies the PreviewKeyUp routed event.
Public fieldStatic memberPreviewLostKeyboardFocusEventIdentifies the PreviewLostKeyboardFocus routed event.
Public fieldStatic memberPreviewMouseDownEventIdentifies the PreviewMouseDown routed event.
Public fieldStatic memberPreviewMouseLeftButtonDownEventIdentifies the PreviewMouseLeftButtonDown routed event.
Public fieldStatic memberPreviewMouseLeftButtonUpEventIdentifies the PreviewMouseLeftButtonUp routed event.
Public fieldStatic memberPreviewMouseMoveEventIdentifies the PreviewMouseMove routed event.
Public fieldStatic memberPreviewMouseRightButtonDownEventIdentifies the PreviewMouseRightButtonDown routed event.
Public fieldStatic memberPreviewMouseRightButtonUpEventIdentifies the PreviewMouseRightButtonUp routed event.
Public fieldStatic memberPreviewMouseUpEventIdentifies the PreviewMouseUp routed event.
Public fieldStatic memberPreviewMouseWheelEventIdentifies the PreviewMouseWheel routed event.
Public fieldStatic memberPreviewQueryContinueDragEventIdentifies the PreviewQueryContinueDrag routed event.
Public fieldStatic memberPreviewStylusButtonDownEventIdentifies the PreviewStylusButtonDown routed event.
Public fieldStatic memberPreviewStylusButtonUpEventIdentifies the PreviewStylusButtonUp routed event.
Public fieldStatic memberPreviewStylusDownEventIdentifies the PreviewStylusDown routed event.
Public fieldStatic memberPreviewStylusInAirMoveEventIdentifies the PreviewStylusInAirMove routed event.
Public fieldStatic memberPreviewStylusInRangeEventIdentifies the PreviewStylusInRange routed event.
Public fieldStatic memberPreviewStylusMoveEventIdentifies the PreviewStylusMove routed event.
Public fieldStatic memberPreviewStylusOutOfRangeEventIdentifies the PreviewStylusOutOfRange routed event.
Public fieldStatic memberPreviewStylusSystemGestureEventIdentifies the PreviewStylusSystemGesture routed event.
Public fieldStatic memberPreviewStylusUpEventIdentifies the PreviewStylusUp routed event.
Public fieldStatic memberPreviewTextInputEventIdentifies the PreviewTextInput routed event.
Public fieldStatic memberPreviewTouchDownEventIdentifies the PreviewTouchDown routed event.
Public fieldStatic memberPreviewTouchMoveEventIdentifies the PreviewTouchMove routed event.
Public fieldStatic memberPreviewTouchUpEventIdentifies the PreviewTouchUp routed event.
Public fieldStatic memberQueryContinueDragEventIdentifies the QueryContinueDrag routed event.
Public fieldStatic memberQueryCursorEventIdentifies the QueryCursor routed event.
Public fieldStatic memberStylusButtonDownEventIdentifies the StylusButtonDown routed event.
Public fieldStatic memberStylusButtonUpEventIdentifies the StylusButtonUp routed event.
Public fieldStatic memberStylusDownEventIdentifies the StylusDown routed event.
Public fieldStatic memberStylusEnterEventIdentifies the StylusEnter routed event.
Public fieldStatic memberStylusInAirMoveEventIdentifies the StylusInAirMove routed event.
Public fieldStatic memberStylusInRangeEventIdentifies the StylusInRange routed event.
Public fieldStatic memberStylusLeaveEventIdentifies the StylusLeave routed event.
Public fieldStatic memberStylusMoveEventIdentifies the StylusMove routed event.
Public fieldStatic memberStylusOutOfRangeEventIdentifies the StylusOutOfRange routed event.
Public fieldStatic memberStylusSystemGestureEventIdentifies the StylusSystemGesture routed event.
Public fieldStatic memberStylusUpEventIdentifies the StylusUp routed event.
Public fieldStatic memberTextInputEventIdentifies the TextInput routed event.
Public fieldStatic memberTouchDownEventIdentifies the TouchDown routed event.
Public fieldStatic memberTouchEnterEventIdentifies the TouchEnter routed event.
Public fieldStatic memberTouchLeaveEventIdentifies the TouchLeave routed event.
Public fieldStatic memberTouchMoveEventIdentifies the TouchMove routed event.
Public fieldStatic memberTouchUpEventIdentifies the TouchUp routed event.
Public fieldStatic memberVisibilityPropertyIdentifies the Visibility dependency property.
Top

UIElement3D is an abstract base class from which you can derive classes to represent specific 3D elements.

Much of the input, focusing, and eventing behavior for 3D elements in general is defined in the UIElement3D class. This includes the events for keyboard, mouse, and stylus input, and related status properties. Many of these events are routed events, and many of the input-related events have both a bubbling routing version as well as a tunneling version of the event. These paired events are typically the events of greatest interest to control authors.

UIElement3D also includes APIs that relate to the WPF event model, including methods that can raise specified routed events that are sourced from an element instance.

A UIElement3D has the following capabilities that are specifically defined by the UIElement3D class:

  • Can respond to user input (including control of where input is sent via handling of event routing or routing of commands).

  • Can raise routed events that travel a route through the logical element tree.

Important noteImportant

Visibility state affects all input handling by that element. Elements that are not visible do not participate in hit testing and do not receive input events, even if the mouse is over the bounds of where the element would be if were visible.

Unlike the UIElement class, the UIElement3D class does not include layout. Therefore, the UIElement3D class does not include Measure or Arrange methods.

A class that derives from UIElement3D and maintains its own collection of Visual3D objects by overriding GetVisual3DChild and Visual3DChildrenCount must still pass new Visual3D objects to AddVisual3DChild.

UIElement3D is introduced in the .NET Framework version 3.5. For more information, see .NET Framework Versions and Dependencies.

The following example shows how to derive from the UIElement3D class to create a Sphere class:

public class Sphere : UIElement3D
{
    // OnUpdateModel is called in response to InvalidateModel and provides 
    // a place to set the Visual3DModel property. 
    //  
    // Setting Visual3DModel does not provide parenting information, which 
    // is needed for data binding, styling, and other features. Similarly, creating render data 
    // in 2-D does not provide the connections either. 
    //  
    // To get around this, we create a Model dependency property which 
    // sets this value.  The Model DP then causes the correct connections to occur 
    // and the above features to work correctly. 
    //  
    // In this update model we retessellate the sphere based on the current 
    // dependency property values, and then set it as the model.  The brush 
    // color is blue by default, but the code can easily be updated to let 
    // this be set by the user. 

    protected override void OnUpdateModel()
    {
        GeometryModel3D model = new GeometryModel3D();

        model.Geometry = Tessellate(ThetaDiv, PhiDiv, Radius);
        model.Material = new DiffuseMaterial(System.Windows.Media.Brushes.Blue);

        Model = model;
    }

    // The Model property for the sphere 
    private static readonly DependencyProperty ModelProperty =
        DependencyProperty.Register("Model",
                                    typeof(Model3D),
                                    typeof(Sphere),
                                    new PropertyMetadata(ModelPropertyChanged));

    private static void ModelPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        Sphere s = (Sphere)d;
        s.Visual3DModel = s.Model;
    }

    private Model3D Model
    {
        get
        {
            return (Model3D)GetValue(ModelProperty);
        }

        set
        {
            SetValue(ModelProperty, value);
        }
    }

    // The number of divisions to make in the theta direction on the sphere 
    public static readonly DependencyProperty ThetaDivProperty =
        DependencyProperty.Register("ThetaDiv",
                                    typeof(int),
                                    typeof(Sphere),
                                    new PropertyMetadata(15, ThetaDivPropertyChanged));

    private static void ThetaDivPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        Sphere s = (Sphere)d;
        s.InvalidateModel();
    }

    public int ThetaDiv
    {
        get
        {
            return (int)GetValue(ThetaDivProperty);
        }

        set
        {
            SetValue(ThetaDivProperty, value);
        }
    }

    // The number of divisions to make in the phi direction on the sphere 
    public static readonly DependencyProperty PhiDivProperty =
        DependencyProperty.Register("PhiDiv",
                                    typeof(int),
                                    typeof(Sphere),
                                    new PropertyMetadata(15, PhiDivPropertyChanged));

    private static void PhiDivPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        Sphere s = (Sphere)d;
        s.InvalidateModel();
    }

    public int PhiDiv
    {
        get
        {
            return (int)GetValue(PhiDivProperty);
        }

        set
        {
            SetValue(PhiDivProperty, value);
        }
    }

    // The radius of the sphere 
    public static readonly DependencyProperty RadiusProperty =
        DependencyProperty.Register("Radius",
                                    typeof(double),
                                    typeof(Sphere),
                                    new PropertyMetadata(1.0, RadiusPropertyChanged));

    private static void RadiusPropertyChanged(DependencyObject d, DependencyPropertyChangedEventArgs e)
    {
        Sphere s = (Sphere)d;
        s.InvalidateModel();
    }

    public double Radius
    {
        get
        {
            return (double)GetValue(RadiusProperty);
        }

        set
        {
            SetValue(RadiusProperty, value);
        }
    }

    // Private helper methods 
    private static Point3D GetPosition(double theta, double phi, double radius)
    {
        double x = radius * Math.Sin(theta) * Math.Sin(phi);
        double y = radius * Math.Cos(phi);
        double z = radius * Math.Cos(theta) * Math.Sin(phi);

        return new Point3D(x, y, z);
    }

    private static Vector3D GetNormal(double theta, double phi)
    {
        return (Vector3D)GetPosition(theta, phi, 1.0);
    }

    private static double DegToRad(double degrees)
    {
        return (degrees / 180.0) * Math.PI;
    }

    private static System.Windows.Point GetTextureCoordinate(double theta, double phi)
    {
        System.Windows.Point p = new System.Windows.Point(theta / (2 * Math.PI),
                            phi / (Math.PI));

        return p;
    }

    // Tesselates the sphere and returns a MeshGeometry3D representing the  
    // tessellation based on the given parameters 
    internal static MeshGeometry3D Tessellate(int tDiv, int pDiv, double radius)
    {            
        double dt = DegToRad(360.0) / tDiv;
        double dp = DegToRad(180.0) / pDiv;

        MeshGeometry3D mesh = new MeshGeometry3D();

        for (int pi = 0; pi <= pDiv; pi++)
        {
            double phi = pi * dp;

            for (int ti = 0; ti <= tDiv; ti++)
            {
                // we want to start the mesh on the x axis 
                double theta = ti * dt;

                mesh.Positions.Add(GetPosition(theta, phi, radius));
                mesh.Normals.Add(GetNormal(theta, phi));
                mesh.TextureCoordinates.Add(GetTextureCoordinate(theta, phi));
            }
        }

        for (int pi = 0; pi < pDiv; pi++)
        {
            for (int ti = 0; ti < tDiv; ti++)
            {
                int x0 = ti;
                int x1 = (ti + 1);
                int y0 = pi * (tDiv + 1);
                int y1 = (pi + 1) * (tDiv + 1);

                mesh.TriangleIndices.Add(x0 + y0);
                mesh.TriangleIndices.Add(x0 + y1);
                mesh.TriangleIndices.Add(x1 + y0);

                mesh.TriangleIndices.Add(x1 + y0);
                mesh.TriangleIndices.Add(x0 + y1);
                mesh.TriangleIndices.Add(x1 + y1);
            }
        }

        mesh.Freeze();
        return mesh;
    }
}

For the complete sample, see UIElement3D Sphere Sample.

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5 SP1, 3.0 SP1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Windows 8.1, Windows Server 2012 R2, Windows 8, Windows Server 2012, Windows 7, Windows Vista SP2, Windows Server 2008 (Server Core Role not supported), Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Was this page helpful?
(1500 characters remaining)
Thank you for your feedback
Show:
© 2014 Microsoft