System.Windows.Threading.DispatcherObject
System.Windows.DependencyObject
System.Windows.Freezable
System.Windows.Media.Animation.Animatable
System.Windows.Media.Media3D.Material
System.Windows.Media.Media3D.EmissiveMaterial
Spazio dei nomi: System.Windows.Media.Media3D
Assembly: PresentationCore (in PresentationCore.dll)
XMLNS per XAML: http://schemas.microsoft.com/winfx/2006/xaml/presentation, http://schemas.microsoft.com/netfx/2007/xaml/presentation
Public NotInheritable Class EmissiveMaterial _ Inherits Material
public sealed class EmissiveMaterial : Material
public ref class EmissiveMaterial sealed : public Material
[<Sealed>] type EmissiveMaterial = class inherit Material end
<EmissiveMaterial .../>
Il tipo EmissiveMaterial espone i seguenti membri.
| Nome | Descrizione | |
|---|---|---|
|
EmissiveMaterial() | Inizializza una nuova istanza della classe EmissiveMaterial. |
|
EmissiveMaterial(Brush) | Inizializza una nuova istanza della classe EmissiveMaterial con il pennello specificato. |
| Nome | Descrizione | |
|---|---|---|
|
Brush | Ottiene o imposta l'oggetto Brush applicato dall'oggetto EmissiveMaterial. |
|
CanFreeze | Ottiene un valore che indica se è possibile rendere immodificabile l’oggetto. (Ereditato da Freezable) |
|
Color | Ottiene o imposta il filtro dei colori per la trama del materiale. |
|
DependencyObjectType | Ottiene la classe DependencyObjectType che include il tipo CLR di questa istanza. (Ereditato da DependencyObject) |
|
Dispatcher | Ottiene l'oggetto Dispatcher associato a DispatcherObject. (Ereditato da DispatcherObject) |
|
HasAnimatedProperties | Ottiene un valore che indica se uno o più oggetti AnimationClock sono associati a una qualsiasi delle proprietà di dipendenza di questo oggetto. (Ereditato da Animatable) |
|
IsFrozen | Ottiene un valore che indica se l’oggetto è attualmente immodificabile. (Ereditato da Freezable) |
|
IsSealed | Ottiene un valore che indica se l'istanza è attualmente sealed (di sola lettura). (Ereditato da DependencyObject) |
| Nome | Descrizione | |
|---|---|---|
|
ApplyAnimationClock(DependencyProperty, AnimationClock) | Applica un oggetto AnimationClock all'oggetto DependencyProperty specificato. Se alla proprietà è già stata aggiunta un'animazione, viene utilizzato il comportamento uniforme dell'oggetto SnapshotAndReplace. (Ereditato da Animatable) |
|
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) | Applica un oggetto AnimationClock all'oggetto DependencyProperty specificato. Se alla proprietà è già stata aggiunta un'animazione, viene utilizzato l'oggetto HandoffBehavior specificato. (Ereditato da Animatable) |
|
BeginAnimation(DependencyProperty, AnimationTimeline) | Applica un'animazione all'oggetto DependencyProperty specificato. L'animazione viene avviata quando si esegue il rendering del fotogramma successivo. Se alla proprietà specificata è già stata aggiunta un'animazione, viene utilizzato il comportamento uniforme dell'oggetto SnapshotAndReplace. (Ereditato da Animatable) |
|
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) | Applica un'animazione all'oggetto DependencyProperty specificato. L'animazione viene avviata quando si esegue il rendering del fotogramma successivo. Se alla proprietà specificata è già stata aggiunta un'animazione, viene utilizzato l'oggetto HandoffBehavior specificato. (Ereditato da Animatable) |
|
CheckAccess | Determina se il thread chiamante ha accesso a DispatcherObject. (Ereditato da DispatcherObject) |
|
ClearValue(DependencyProperty) | Cancella il valore locale di una proprietà. La proprietà da cancellare è indicata da un identificatore DependencyProperty. (Ereditato da DependencyObject) |
|
ClearValue(DependencyPropertyKey) | Cancella il valore locale di una proprietà di sola lettura. La proprietà da cancellare è indicata da un identificatore DependencyPropertyKey. (Ereditato da DependencyObject) |
|
Clone | Crea un duplicato modificabile dell'oggetto EmissiveMaterial, eseguendo copie complete dei valori di tale oggetto. Durante la copia delle proprietà di dipendenza, vengono copiati i riferimenti di risorsa e le associazioni dati (che potrebbero non essere più risolti), ma non le animazioni o i relativi valori correnti. |
|
CloneCore | Si prenda ad esempio un clone (copia completa) di Freezable specificato utilizzando valori della proprietà di base (non-animati). (Ereditato da Freezable) |
|
CloneCurrentValue | Crea un duplicato modificabile di EmissiveMaterial, eseguendo copie complete dei valori correnti di questo oggetto. I riferimenti di risorsa, le associazioni dati e le animazioni non vengono copiati, mentre vengono copiati i relativi valori correnti. |
|
CloneCurrentValueCore | Rende l’istanza una copia modificabile (copia completa) dell'oggetto Freezable specificato utilizzando i valori della proprietà correnti. (Ereditato da Freezable) |
|
CoerceValue | Assegna il valore della proprietà di dipendenza specificata. Questa operazione viene eseguita richiamando qualsiasi funzione CoerceValueCallback specificata nei metadati della proprietà di dipendenza, esistente nell'oggetto DependencyObject chiamante. (Ereditato da DependencyObject) |
|
CreateInstance | Inizializza una nuova istanza della classe Freezable. (Ereditato da Freezable) |
|
CreateInstanceCore | Quando è implementato in una classe derivata, crea una nuova istanza della classe derivata Freezable. (Ereditato da Freezable) |
|
Equals | Determina se l'oggetto DependencyObject specificato equivale all'oggetto DependencyObject corrente. (Ereditato da DependencyObject) |
|
Finalize | Consente a un oggetto di provare a liberare risorse ed eseguire altre operazioni di pulitura prima che l'oggetto stesso venga recuperato dalla procedura di Garbage Collection. (Ereditato da Object) |
|
Freeze() | Rende immodificabile l'oggetto corrente e imposta la proprietà IsFrozen su true. (Ereditato da Freezable) |
|
FreezeCore | Rende immodificabile questo oggetto Animatable o determina se l'oggetto può essere reso immodificabile. (Ereditato da Animatable) |
|
GetAnimationBaseValue | Restituisce il valore non animato dell'oggetto DependencyProperty specificato. (Ereditato da Animatable) |
|
GetAsFrozen | Crea una copia bloccata di Freezable, utilizzando valori delle proprietà di base (non-animati). Dato che la copia è bloccata, gli oggetti secondari bloccati sono copiati dal riferimento. (Ereditato da Freezable) |
|
GetAsFrozenCore | Si prenda ad esempio una copia bloccata di Freezable specificato utilizzando valori della proprietà di base (non-animati). (Ereditato da Freezable) |
|
GetCurrentValueAsFrozen | Crea una copia bloccata di Freezable utilizzando valori della proprietà correnti. Dato che la copia è bloccata, gli oggetti secondari bloccati sono copiati dal riferimento. (Ereditato da Freezable) |
|
GetCurrentValueAsFrozenCore | Rende l’istanza corrente una copia bloccata di Freezablespecificato. Se l'oggetto dispone di proprietà di dipendenza animate, i valori animati correnti vengono copiati. (Ereditato da Freezable) |
|
GetHashCode | Ottiene un codice hash per questo oggetto DependencyObject. (Ereditato da DependencyObject) |
|
GetLocalValueEnumerator | Crea un enumeratore specializzato per determinare le proprietà di dipendenza che presentano valori impostati localmente nell'oggetto DependencyObject. (Ereditato da DependencyObject) |
|
GetType | Ottiene l'oggetto Type dell'istanza corrente. (Ereditato da Object) |
|
GetValue | Restituisce il valore effettivo corrente di una proprietà di dipendenza in questa istanza di DependencyObject. (Ereditato da DependencyObject) |
|
InvalidateProperty | Valuta di nuovo il valore effettivo della proprietà di dipendenza specificata. (Ereditato da DependencyObject) |
|
MemberwiseClone | Consente di creare una copia dei riferimenti dell'oggetto Object corrente. (Ereditato da Object) |
|
OnChanged | Viene chiamato quando l'oggetto Freezable corrente viene modificato. (Ereditato da Freezable) |
|
OnFreezablePropertyChanged(DependencyObject, DependencyObject) | Assicura che adatti puntatori del contesto siano stabiliti per un membro dati DependencyObjectType che è appena stato impostato. (Ereditato da Freezable) |
|
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) | Questo membro supporta l'infrastruttura Windows Presentation Foundation (WPF) e non può essere utilizzato direttamente dal codice. (Ereditato da Freezable) |
|
OnPropertyChanged | Esegue l'override dell'implementazione DependencyObject di OnPropertyChanged per richiamare anche qualsiasi gestore Changed in risposta a una modifica della proprietà di dipendenza di tipo Freezable. (Ereditato da Freezable) |
|
ReadLocalValue | Restituisce il valore locale di una proprietà di dipendenza, se esistente. (Ereditato da DependencyObject) |
|
ReadPreamble | Assicura che l’accesso di Freezable sia stato eseguito da un thread valido. Gli eredi di Freezable devono chiamare questo metodo all'inizio di qualsiasi API che legge i membri dei dati che non sono proprietà della dipendenza. (Ereditato da Freezable) |
|
SetCurrentValue | Imposta il valore di una proprietà di dipendenza senza modificare l'origine del valore. (Ereditato da DependencyObject) |
|
SetValue(DependencyProperty, Object) | Imposta il valore locale di una proprietà di dipendenza, specificata dal relativo identificatore. (Ereditato da DependencyObject) |
|
SetValue(DependencyPropertyKey, Object) | Imposta il valore locale di una proprietà di dipendenza di sola lettura, specificata dall'identificatore DependencyPropertyKey della proprietà di dipendenza. (Ereditato da DependencyObject) |
|
ShouldSerializeProperty | Restituisce un valore che indica se i processi di serializzazione devono serializzare il valore della proprietà di dipendenza fornita. (Ereditato da DependencyObject) |
|
ToString() | Crea una rappresentazione di stringa dell'oggetto in base alle impostazioni cultura correnti. (Ereditato da Material) |
|
ToString(IFormatProvider) | Crea una rappresentazione di stringa dell'oggetto Material. (Ereditato da Material) |
|
VerifyAccess | Impone che il thread chiamante abbia accesso a DispatcherObject. (Ereditato da DispatcherObject) |
|
WritePostscript | Genera l'evento Changed per Freezable e richiama il metodo OnChanged. Le classi che derivano da Freezable devono chiamare questo metodo alla fine di qualsiasi API che modifica i membri della classe non archiviati come proprietà di dipendenza. (Ereditato da Freezable) |
|
WritePreamble | Verifica che l'oggetto Freezable non sia bloccato e che l'accesso sia eseguito da un contesto di threading valido. Gli eredi di Freezable devono chiamare questo metodo all'inizio di qualsiasi API che scrive sui membri dei dati che non sono proprietà della dipendenza. (Ereditato da Freezable) |
| Nome | Descrizione | |
|---|---|---|
|
Changed | Si verifica quando Freezable o un oggetto che contiene è modificato. (Ereditato da Freezable) |
| Nome | Descrizione | |
|---|---|---|
|
BrushProperty | Identifica la proprietà di dipendenza Brush. |
|
ColorProperty | Identifica la proprietà di dipendenza Color. |
| Nome | Descrizione | |
|---|---|---|
|
IFormattable.ToString | Formatta il valore dell'istanza corrente utilizzando il formato specificato. (Ereditato da Material) |
EmissiveMaterial aggiunge il relativo colore a qualsiasi materiale esistente applicato al modello.
The following example shows how to use EmissiveMaterial to add color to an existing Material equal to the color of the EmissiveMaterial's brush. The code below shows DiffuseMaterial and EmissiveMaterial applied in combination to add blue to the DiffuseMaterial's appearance.
<!-- The material applied to the 3D object is made up of a DiffuseMaterial (gradient brush) with an EmissiveMaterial layered on top (blue SolidColorBrush). The EmissiveMaterial adds blue to the gradient. --> <GeometryModel3D.Material> <MaterialGroup> <DiffuseMaterial> <DiffuseMaterial.Brush> <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> <LinearGradientBrush.GradientStops> <GradientStop Color="Yellow" Offset="0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </DiffuseMaterial.Brush> </DiffuseMaterial> <EmissiveMaterial> <EmissiveMaterial.Brush> <SolidColorBrush x:Name="mySolidColorBrush" Color="Blue" /> </EmissiveMaterial.Brush> </EmissiveMaterial> </MaterialGroup> </GeometryModel3D.Material>
In procedural code:
' The material property of GeometryModel3D specifies the material applied to the 3D object. ' In this sample the material applied to the 3D object is made up of two materials layered ' on top of each other - a DiffuseMaterial (gradient brush) with an EmissiveMaterial ' layered on top (blue SolidColorBrush). The EmmisiveMaterial alters the appearance of ' the gradient toward blue. ' Create a horizontal linear gradient with four stops. Dim myHorizontalGradient As New LinearGradientBrush() myHorizontalGradient.StartPoint = New Point(0, 0.5) myHorizontalGradient.EndPoint = New Point(1, 0.5) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.Yellow, 0.0)) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.Red, 0.25)) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.Blue, 0.75)) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.LimeGreen, 1.0)) ' Define material that will use the gradient. Dim myDiffuseMaterial As New DiffuseMaterial(myHorizontalGradient) ' Add this gradient to a MaterialGroup. Dim myMaterialGroup As New MaterialGroup() myMaterialGroup.Children.Add(myDiffuseMaterial) ' Define an Emissive Material with a blue brush. Dim c As New Color() c.ScA = 1 c.ScB = 255 c.ScR = 0 c.ScG = 0 Dim myEmissiveMaterial As New EmissiveMaterial(New SolidColorBrush(c)) ' Add the Emmisive Material to the Material Group. myMaterialGroup.Children.Add(myEmissiveMaterial) ' Add the composite material to the 3D model. myGeometryModel.Material = myMaterialGroup
// The material property of GeometryModel3D specifies the material applied to the 3D object. // In this sample the material applied to the 3D object is made up of two materials layered // on top of each other - a DiffuseMaterial (gradient brush) with an EmissiveMaterial // layered on top (blue SolidColorBrush). The EmmisiveMaterial alters the appearance of // the gradient toward blue. // Create a horizontal linear gradient with four stops. LinearGradientBrush myHorizontalGradient = new LinearGradientBrush(); myHorizontalGradient.StartPoint = new Point(0, 0.5); myHorizontalGradient.EndPoint = new Point(1, 0.5); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0)); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.Red, 0.25)); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.Blue, 0.75)); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.LimeGreen, 1.0)); // Define material that will use the gradient. DiffuseMaterial myDiffuseMaterial = new DiffuseMaterial(myHorizontalGradient); // Add this gradient to a MaterialGroup. MaterialGroup myMaterialGroup = new MaterialGroup(); myMaterialGroup.Children.Add(myDiffuseMaterial); // Define an Emissive Material with a blue brush. Color c = new Color(); c.ScA = 1; c.ScB = 255; c.ScR = 0; c.ScG = 0; EmissiveMaterial myEmissiveMaterial = new EmissiveMaterial(new SolidColorBrush(c)); // Add the Emmisive Material to the Material Group. myMaterialGroup.Children.Add(myEmissiveMaterial); // Add the composite material to the 3D model. myGeometryModel.Material = myMaterialGroup;
The following code shows the entire sample in XAML.
<Page xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" > <DockPanel> <Viewbox> <Canvas Width="321" Height="201"> <!-- The Viewport3D provides a rendering surface for 3-D visual content. --> <Viewport3D ClipToBounds="True" Width="150" Height="150" Canvas.Left="0" Canvas.Top="10"> <!-- Defines the camera used to view the 3D object. --> <Viewport3D.Camera> <PerspectiveCamera x:Name="myPerspectiveCamera" Position="0,0,2" LookDirection="0,0,-1" FieldOfView="60" /> </Viewport3D.Camera> <!-- The ModelVisual3D children contain the 3D models --> <Viewport3D.Children> <!-- This ModelVisual3D defines the lights cast in the scene. Without light, the 3D object cannot be seen. --> <ModelVisual3D> <ModelVisual3D.Content> <DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" /> </ModelVisual3D.Content> </ModelVisual3D> <ModelVisual3D> <ModelVisual3D.Content> <GeometryModel3D> <!-- The geometry specifes the shape of the 3D plane. In this case, a flat sheet is created. --> <GeometryModel3D.Geometry> <MeshGeometry3D TriangleIndices="0,1,2 3,4,5 " Normals="0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 0,0,1 " TextureCoordinates="0,0 1,0 1,1 1,1 0,1 0,0 " Positions="-0.5,-0.5,0.5 0.5,-0.5,0.5 0.5,0.5,0.5 0.5,0.5,0.5 -0.5,0.5,0.5 -0.5,-0.5,0.5 " /> </GeometryModel3D.Geometry> <!-- The material applied to the 3D object is made up of a DiffuseMaterial (gradient brush) with an EmissiveMaterial layered on top (blue SolidColorBrush). The EmissiveMaterial adds blue to the gradient. --> <GeometryModel3D.Material> <MaterialGroup> <DiffuseMaterial> <DiffuseMaterial.Brush> <LinearGradientBrush StartPoint="0,0.5" EndPoint="1,0.5"> <LinearGradientBrush.GradientStops> <GradientStop Color="Yellow" Offset="0" /> <GradientStop Color="Red" Offset="0.25" /> <GradientStop Color="Blue" Offset="0.75" /> <GradientStop Color="LimeGreen" Offset="1" /> </LinearGradientBrush.GradientStops> </LinearGradientBrush> </DiffuseMaterial.Brush> </DiffuseMaterial> <EmissiveMaterial> <EmissiveMaterial.Brush> <SolidColorBrush x:Name="mySolidColorBrush" Color="Blue" /> </EmissiveMaterial.Brush> </EmissiveMaterial> </MaterialGroup> </GeometryModel3D.Material> <!-- The Transform specifies how to transform the 3D object. This transform rotates the object.--> <GeometryModel3D.Transform> <RotateTransform3D> <RotateTransform3D.Rotation> <AxisAngleRotation3D x:Name="myAngleRotation" Axis="0,3,0" Angle="40" /> </RotateTransform3D.Rotation> </RotateTransform3D> </GeometryModel3D.Transform> </GeometryModel3D> </ModelVisual3D.Content> </ModelVisual3D> </Viewport3D.Children> </Viewport3D> </Canvas> </Viewbox> </DockPanel> </Page>
Below is the entire sample in procedural code.
Imports Microsoft.VisualBasic Imports System Imports System.Windows Imports System.Windows.Controls Imports System.Windows.Media Imports System.Windows.Media.Media3D Namespace SDKSample Partial Public Class EmissiveMaterialExample Inherits Page Public Sub New() ' Declare scene objects. Dim myViewport3D As New Viewport3D() Dim myModel3DGroup As New Model3DGroup() Dim myGeometryModel As New GeometryModel3D() Dim myModelVisual3D As New ModelVisual3D() ' Defines the camera used to view the 3D object. In order to view the 3D object, ' the camera must be positioned and pointed such that the object is within view ' of the camera. Dim myPCamera As New PerspectiveCamera() ' Specify where in the 3D scene the camera is. myPCamera.Position = New Point3D(0, 0, 2) ' Specify the direction that the camera is pointing. myPCamera.LookDirection = New Vector3D(0, 0, -1) ' Define camera's horizontal field of view in degrees. myPCamera.FieldOfView = 60 ' Asign the camera to the viewport myViewport3D.Camera = myPCamera ' Define the lights cast in the scene. Without light, the 3D object cannot ' be seen. Note: to illuminate an object from additional directions, create ' additional lights. Dim myDirectionalLight As New DirectionalLight() myDirectionalLight.Color = Colors.White myDirectionalLight.Direction = New Vector3D(-0.61, -0.5, -0.61) myModel3DGroup.Children.Add(myDirectionalLight) ' The geometry specifes the shape of the 3D plane. In this sample, a flat sheet ' is created. Dim myMeshGeometry3D As New MeshGeometry3D() ' Create a collection of normal vectors for the MeshGeometry3D. Dim myNormalCollection As New Vector3DCollection() myNormalCollection.Add(New Vector3D(0,0,1)) myNormalCollection.Add(New Vector3D(0,0,1)) myNormalCollection.Add(New Vector3D(0,0,1)) myNormalCollection.Add(New Vector3D(0,0,1)) myNormalCollection.Add(New Vector3D(0,0,1)) myNormalCollection.Add(New Vector3D(0,0,1)) myMeshGeometry3D.Normals = myNormalCollection ' Create a collection of vertex positions for the MeshGeometry3D. Dim myPositionCollection As New Point3DCollection() myPositionCollection.Add(New Point3D(-0.5, -0.5, 0.5)) myPositionCollection.Add(New Point3D(0.5, -0.5, 0.5)) myPositionCollection.Add(New Point3D(0.5, 0.5, 0.5)) myPositionCollection.Add(New Point3D(0.5, 0.5, 0.5)) myPositionCollection.Add(New Point3D(-0.5, 0.5, 0.5)) myPositionCollection.Add(New Point3D(-0.5, -0.5, 0.5)) myMeshGeometry3D.Positions = myPositionCollection ' Create a collection of texture coordinates for the MeshGeometry3D. Dim myTextureCoordinatesCollection As New PointCollection() myTextureCoordinatesCollection.Add(New Point(0, 0)) myTextureCoordinatesCollection.Add(New Point(1, 0)) myTextureCoordinatesCollection.Add(New Point(1, 1)) myTextureCoordinatesCollection.Add(New Point(1, 1)) myTextureCoordinatesCollection.Add(New Point(0, 1)) myTextureCoordinatesCollection.Add(New Point(0, 0)) myMeshGeometry3D.TextureCoordinates = myTextureCoordinatesCollection ' Create a collection of triangle indices for the MeshGeometry3D. Dim myTriangleIndicesCollection As New Int32Collection() myTriangleIndicesCollection.Add(0) myTriangleIndicesCollection.Add(1) myTriangleIndicesCollection.Add(2) myTriangleIndicesCollection.Add(3) myTriangleIndicesCollection.Add(4) myTriangleIndicesCollection.Add(5) myMeshGeometry3D.TriangleIndices = myTriangleIndicesCollection ' Apply the mesh to the geometry model. myGeometryModel.Geometry = myMeshGeometry3D ' The material property of GeometryModel3D specifies the material applied to the 3D object. ' In this sample the material applied to the 3D object is made up of two materials layered ' on top of each other - a DiffuseMaterial (gradient brush) with an EmissiveMaterial ' layered on top (blue SolidColorBrush). The EmmisiveMaterial alters the appearance of ' the gradient toward blue. ' Create a horizontal linear gradient with four stops. Dim myHorizontalGradient As New LinearGradientBrush() myHorizontalGradient.StartPoint = New Point(0, 0.5) myHorizontalGradient.EndPoint = New Point(1, 0.5) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.Yellow, 0.0)) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.Red, 0.25)) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.Blue, 0.75)) myHorizontalGradient.GradientStops.Add(New GradientStop(Colors.LimeGreen, 1.0)) ' Define material that will use the gradient. Dim myDiffuseMaterial As New DiffuseMaterial(myHorizontalGradient) ' Add this gradient to a MaterialGroup. Dim myMaterialGroup As New MaterialGroup() myMaterialGroup.Children.Add(myDiffuseMaterial) ' Define an Emissive Material with a blue brush. Dim c As New Color() c.ScA = 1 c.ScB = 255 c.ScR = 0 c.ScG = 0 Dim myEmissiveMaterial As New EmissiveMaterial(New SolidColorBrush(c)) ' Add the Emmisive Material to the Material Group. myMaterialGroup.Children.Add(myEmissiveMaterial) ' Add the composite material to the 3D model. myGeometryModel.Material = myMaterialGroup ' Apply a transform to the object. In this sample, a rotation transform is applied, ' rendering the 3D object rotated. Dim myRotateTransform3D As New RotateTransform3D() Dim myAxisAngleRotation3d As New AxisAngleRotation3D() myAxisAngleRotation3d.Axis = New Vector3D(0,3,0) myAxisAngleRotation3d.Angle = 40 myRotateTransform3D.Rotation = myAxisAngleRotation3d myGeometryModel.Transform = myRotateTransform3D ' Add the geometry model to the model group. myModel3DGroup.Children.Add(myGeometryModel) ' Add the group of models to the ModelVisual3d. myModelVisual3D.Content = myModel3DGroup myViewport3D.Children.Add(myModelVisual3D) ' Apply the viewport to the page so it will be rendered. Me.Content = myViewport3D End Sub End Class End Namespace
using System; using System.Windows; using System.Windows.Controls; using System.Windows.Media; using System.Windows.Media.Media3D; namespace SDKSample { public partial class EmissiveMaterialExample : Page { public EmissiveMaterialExample() { // Declare scene objects. Viewport3D myViewport3D = new Viewport3D(); Model3DGroup myModel3DGroup = new Model3DGroup(); GeometryModel3D myGeometryModel = new GeometryModel3D(); ModelVisual3D myModelVisual3D = new ModelVisual3D(); // Defines the camera used to view the 3D object. In order to view the 3D object, // the camera must be positioned and pointed such that the object is within view // of the camera. PerspectiveCamera myPCamera = new PerspectiveCamera(); // Specify where in the 3D scene the camera is. myPCamera.Position = new Point3D(0, 0, 2); // Specify the direction that the camera is pointing. myPCamera.LookDirection = new Vector3D(0, 0, -1); // Define camera's horizontal field of view in degrees. myPCamera.FieldOfView = 60; // Asign the camera to the viewport myViewport3D.Camera = myPCamera; // Define the lights cast in the scene. Without light, the 3D object cannot // be seen. Note: to illuminate an object from additional directions, create // additional lights. DirectionalLight myDirectionalLight = new DirectionalLight(); myDirectionalLight.Color = Colors.White; myDirectionalLight.Direction = new Vector3D(-0.61, -0.5, -0.61); myModel3DGroup.Children.Add(myDirectionalLight); // The geometry specifes the shape of the 3D plane. In this sample, a flat sheet // is created. MeshGeometry3D myMeshGeometry3D = new MeshGeometry3D(); // Create a collection of normal vectors for the MeshGeometry3D. Vector3DCollection myNormalCollection = new Vector3DCollection(); myNormalCollection.Add(new Vector3D(0,0,1)); myNormalCollection.Add(new Vector3D(0,0,1)); myNormalCollection.Add(new Vector3D(0,0,1)); myNormalCollection.Add(new Vector3D(0,0,1)); myNormalCollection.Add(new Vector3D(0,0,1)); myNormalCollection.Add(new Vector3D(0,0,1)); myMeshGeometry3D.Normals = myNormalCollection; // Create a collection of vertex positions for the MeshGeometry3D. Point3DCollection myPositionCollection = new Point3DCollection(); myPositionCollection.Add(new Point3D(-0.5, -0.5, 0.5)); myPositionCollection.Add(new Point3D(0.5, -0.5, 0.5)); myPositionCollection.Add(new Point3D(0.5, 0.5, 0.5)); myPositionCollection.Add(new Point3D(0.5, 0.5, 0.5)); myPositionCollection.Add(new Point3D(-0.5, 0.5, 0.5)); myPositionCollection.Add(new Point3D(-0.5, -0.5, 0.5)); myMeshGeometry3D.Positions = myPositionCollection; // Create a collection of texture coordinates for the MeshGeometry3D. PointCollection myTextureCoordinatesCollection = new PointCollection(); myTextureCoordinatesCollection.Add(new Point(0, 0)); myTextureCoordinatesCollection.Add(new Point(1, 0)); myTextureCoordinatesCollection.Add(new Point(1, 1)); myTextureCoordinatesCollection.Add(new Point(1, 1)); myTextureCoordinatesCollection.Add(new Point(0, 1)); myTextureCoordinatesCollection.Add(new Point(0, 0)); myMeshGeometry3D.TextureCoordinates = myTextureCoordinatesCollection; // Create a collection of triangle indices for the MeshGeometry3D. Int32Collection myTriangleIndicesCollection = new Int32Collection(); myTriangleIndicesCollection.Add(0); myTriangleIndicesCollection.Add(1); myTriangleIndicesCollection.Add(2); myTriangleIndicesCollection.Add(3); myTriangleIndicesCollection.Add(4); myTriangleIndicesCollection.Add(5); myMeshGeometry3D.TriangleIndices = myTriangleIndicesCollection; // Apply the mesh to the geometry model. myGeometryModel.Geometry = myMeshGeometry3D; // The material property of GeometryModel3D specifies the material applied to the 3D object. // In this sample the material applied to the 3D object is made up of two materials layered // on top of each other - a DiffuseMaterial (gradient brush) with an EmissiveMaterial // layered on top (blue SolidColorBrush). The EmmisiveMaterial alters the appearance of // the gradient toward blue. // Create a horizontal linear gradient with four stops. LinearGradientBrush myHorizontalGradient = new LinearGradientBrush(); myHorizontalGradient.StartPoint = new Point(0, 0.5); myHorizontalGradient.EndPoint = new Point(1, 0.5); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.Yellow, 0.0)); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.Red, 0.25)); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.Blue, 0.75)); myHorizontalGradient.GradientStops.Add(new GradientStop(Colors.LimeGreen, 1.0)); // Define material that will use the gradient. DiffuseMaterial myDiffuseMaterial = new DiffuseMaterial(myHorizontalGradient); // Add this gradient to a MaterialGroup. MaterialGroup myMaterialGroup = new MaterialGroup(); myMaterialGroup.Children.Add(myDiffuseMaterial); // Define an Emissive Material with a blue brush. Color c = new Color(); c.ScA = 1; c.ScB = 255; c.ScR = 0; c.ScG = 0; EmissiveMaterial myEmissiveMaterial = new EmissiveMaterial(new SolidColorBrush(c)); // Add the Emmisive Material to the Material Group. myMaterialGroup.Children.Add(myEmissiveMaterial); // Add the composite material to the 3D model. myGeometryModel.Material = myMaterialGroup; // Apply a transform to the object. In this sample, a rotation transform is applied, // rendering the 3D object rotated. RotateTransform3D myRotateTransform3D = new RotateTransform3D(); AxisAngleRotation3D myAxisAngleRotation3d = new AxisAngleRotation3D(); myAxisAngleRotation3d.Axis = new Vector3D(0,3,0); myAxisAngleRotation3d.Angle = 40; myRotateTransform3D.Rotation = myAxisAngleRotation3d; myGeometryModel.Transform = myRotateTransform3D; // Add the geometry model to the model group. myModel3DGroup.Children.Add(myGeometryModel); // Add the group of models to the ModelVisual3d. myModelVisual3D.Content = myModel3DGroup; myViewport3D.Children.Add(myModelVisual3D); // Apply the viewport to the page so it will be rendered. this.Content = myViewport3D; } } }
.NET Framework
Supportato in: 4, 3.5, 3.0.NET Framework Client Profile
Supportato in: 4, 3.5 SP1Windows 7, Windows Vista SP1 o versione successiva, Windows XP SP3, Windows Server 2008 (componenti di base del server non supportati), Windows Server 2008 R2 (componenti di base del server supportati con SP1 o versione successiva), Windows Server 2003 SP2
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema di .NET Framework.