PerspectiveCamera Classe

Definição

Representa uma câmara de projeção em perspetiva.

public ref class PerspectiveCamera sealed : System::Windows::Media::Media3D::ProjectionCamera
public sealed class PerspectiveCamera : System.Windows.Media.Media3D.ProjectionCamera
type PerspectiveCamera = class
    inherit ProjectionCamera
Public NotInheritable Class PerspectiveCamera
Inherits ProjectionCamera
Herança

Exemplos

<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 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 light cast in the scene. Without light, the 3D 
                 object cannot be seen. Also, the direction of the lights affect shadowing. If desired,
                 you can create multiple lights with different colors that shine from different directions. -->
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <DirectionalLight Color="#FFFFFF" Direction="-0.612372,-0.5,-0.612372" />
              </ModelVisual3D.Content>
            </ModelVisual3D>
            <ModelVisual3D>
              <ModelVisual3D.Content>
                <GeometryModel3D>

                  <!-- The geometry specifies the shape of the 3D plane. In this sample, 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 specifies the material applied to the 3D object. In this sample a tiled drawing   
                       covers the surface of the 3D object.-->
                  <GeometryModel3D.Material>
                    <DiffuseMaterial>
                      <DiffuseMaterial.Brush>
                        <DrawingBrush Viewport="0,0,0.1,0.1" TileMode="Tile">
                          <DrawingBrush.Drawing>
                            <DrawingGroup>
                              <DrawingGroup.Children>
                                <GeometryDrawing Geometry="M0,0.1 L0.1,0 1,0.9, 0.9,1z"
                                  Brush="Gray" />
                                <GeometryDrawing Geometry="M0.9,0 L1,0.1 0.1,1 0,0.9z"
                                  Brush="Gray" />
                                <GeometryDrawing Geometry="M0.25,0.25 L0.5,0.125 0.75,0.25 0.5,0.5z"
                                  Brush="#FFFF00" />
                                <GeometryDrawing Geometry="M0.25,0.75 L0.5,0.875 0.75,0.75 0.5,0.5z"
                                  Brush="Black" />
                                <GeometryDrawing Geometry="M0.25,0.75 L0.125,0.5 0.25,0.25 0.5,0.5z"
                                  Brush="#FF0000" />
                                <GeometryDrawing Geometry="M0.75,0.25 L0.875,0.5 0.75,0.75 0.5,0.5z"
                                  Brush="MediumBlue" />
                              </DrawingGroup.Children>
                            </DrawingGroup>
                          </DrawingBrush.Drawing>
                        </DrawingBrush>
                      </DiffuseMaterial.Brush>
                    </DiffuseMaterial>
                  </GeometryModel3D.Material>
                  <!-- Apply a transform to the object. In this sample, a rotation transform is applied, rendering the 
                       3D object rotated. -->
                  <GeometryModel3D.Transform>
                    <RotateTransform3D>
                      <RotateTransform3D.Rotation>
                        <AxisAngleRotation3D Axis="0,3,0" Angle="40" />
                      </RotateTransform3D.Rotation>
                    </RotateTransform3D>
                  </GeometryModel3D.Transform>
                </GeometryModel3D>
              </ModelVisual3D.Content>
            </ModelVisual3D>
          </Viewport3D.Children>
        </Viewport3D>
      </Canvas>
    </Viewbox>
  </DockPanel>
</Page>

Observações

PerspectiveCamera especifica uma projeção de um modelo 3D para uma superfície visual 2D. Esta projeção inclui encurtamento de perspetiva. Por outras palavras, descreve PerspectiveCamera um frustrum cujos lados convergem para um ponto no horizonte. Os objetos mais próximos da câmara parecem maiores, e os objetos mais afastados da câmara parecem mais pequenos.

O diagrama seguinte mostra a diferença entre projeções de câmara ortográficas e de câmara encurtadas em perspetiva.

Projeção ortográfica e perspetiva

Construtores

Name Description
PerspectiveCamera()

Inicializa uma nova instância da PerspectiveCamera classe.

PerspectiveCamera(Point3D, Vector3D, Vector3D, Double)

Inicializa uma nova instância da PerspectiveCamera classe usando a posição, direção e campo de visão especificados.

Campos

Name Description
FieldOfViewProperty

Identifica a FieldOfView propriedade de dependência.

Propriedades

Name Description
CanFreeze

Obtém um valor que indica se o objeto pode ser tornado inmodificável.

(Herdado de Freezable)
DependencyObjectType

Obtém o DependencyObjectType que envolve o tipo CLR desta instância.

(Herdado de DependencyObject)
Dispatcher

Percebe o Dispatcher que isto DispatcherObject está associado.

(Herdado de DispatcherObject)
FarPlaneDistance

Recebe ou define um valor que especifica a distância do plano de clipe distante da câmara.

(Herdado de ProjectionCamera)
FieldOfView

Obtém ou define um valor que representa o campo de visão horizontal da câmara.

HasAnimatedProperties

Obtém um valor que indica se um ou mais AnimationClock objetos estão associados a alguma das propriedades de dependência deste objeto.

(Herdado de Animatable)
IsFrozen

Recebe um valor que indica se o objeto é atualmente modificável.

(Herdado de Freezable)
IsSealed

Recebe um valor que indica se esta instância está atualmente selada (apenas leitura).

(Herdado de DependencyObject)
LookDirection

Obtém ou define a Vector3D que define a direção em que a câmara está a olhar nas coordenadas do mundo.

(Herdado de ProjectionCamera)
NearPlaneDistance

Recebe ou define um valor que especifica a distância à câmara do plano de quase clipe da câmara.

(Herdado de ProjectionCamera)
Position

Obtém ou define a posição da câmara em coordenadas do mundo.

(Herdado de ProjectionCamera)
Transform

Recebe ou define o Transform3D aplicado à câmara.

(Herdado de Camera)
UpDirection

Obtém ou define a Vector3D que define a direção ascendente da câmara.

(Herdado de ProjectionCamera)

Métodos

Name Description
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior)

Aplica-se a AnimationClock um ao especificado DependencyProperty. Se a propriedade já estiver animada, utiliza-se a especificada HandoffBehavior .

(Herdado de Animatable)
ApplyAnimationClock(DependencyProperty, AnimationClock)

Aplica-se a AnimationClock um ao especificado DependencyProperty. Se a propriedade já estiver animada, utiliza-se o SnapshotAndReplace comportamento de handoff.

(Herdado de Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior)

Aplica uma animação ao especificado DependencyProperty. A animação é iniciada quando o frame seguinte é renderizado. Se a propriedade especificada já estiver animada, é usada a especificada HandoffBehavior .

(Herdado de Animatable)
BeginAnimation(DependencyProperty, AnimationTimeline)

Aplica uma animação ao especificado DependencyProperty. A animação é iniciada quando o frame seguinte é renderizado. Se a propriedade especificada já estiver animada, utiliza-se o SnapshotAndReplace comportamento de handoff.

(Herdado de Animatable)
CheckAccess()

Determina se o thread que chama tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
ClearValue(DependencyProperty)

Limpa o valor local de uma propriedade. A propriedade a ser limpa é especificada por um DependencyProperty identificador.

(Herdado de DependencyObject)
ClearValue(DependencyPropertyKey)

Limpa o valor local de uma propriedade de apenas leitura. O imóvel a ser limpo é especificado por um DependencyPropertyKey.

(Herdado de DependencyObject)
Clone()

Cria um clone modificável deste PerspectiveCamera, fazendo cópias profundas dos valores deste objeto. Ao copiar propriedades de dependência, este método copia referências de recursos e ligações de dados (mas podem deixar de se resolver), mas não as animações nem os seus valores atuais.

CloneCore(Freezable)

Torna a instância um clone (cópia profunda) dos valores especificados Freezable usando valores base (não animados).

(Herdado de Freezable)
CloneCurrentValue()

Cria um clone modificável deste PerspectiveCamera objeto, fazendo cópias profundas dos valores atuais desse objeto. Referências de recursos, ligações de dados e animações não são copiadas, mas os seus valores atuais são.

CloneCurrentValueCore(Freezable)

Torna a instância um clone modificável (cópia profunda) do especificado Freezable usando valores atuais de propriedades.

(Herdado de Freezable)
CoerceValue(DependencyProperty)

Coage o valor da propriedade de dependência especificada. Isto é conseguido invocando qualquer CoerceValueCallback função especificada nos metadados da propriedade para a propriedade de dependência tal como existe na chamada DependencyObject.

(Herdado de DependencyObject)
CreateInstance()

Inicializa uma nova instância da Freezable classe.

(Herdado de Freezable)
CreateInstanceCore()

Quando implementado numa classe derivada, cria-se uma nova instância da Freezable classe derivada.

(Herdado de Freezable)
Equals(Object)

Determina se um fornecido DependencyObject é equivalente à corrente DependencyObject.

(Herdado de DependencyObject)
Freeze()

Torna o objeto atual immodificável e define a sua IsFrozen propriedade como true.

(Herdado de Freezable)
FreezeCore(Boolean)

Torna este Animatable objeto immodificável ou determina se pode ser tornado inmodificável.

(Herdado de Animatable)
GetAnimationBaseValue(DependencyProperty)

Devolve o valor não animado do especificado DependencyProperty.

(Herdado de Animatable)
GetAsFrozen()

Cria uma cópia congelada do Freezable, usando valores base (não animados) da propriedade. Como a cópia está congelada, quaisquer subobjetos congelados são copiados por referência.

(Herdado de Freezable)
GetAsFrozenCore(Freezable)

Torna a instância um clone congelado do especificado Freezable usando valores base (não animados).

(Herdado de Freezable)
GetCurrentValueAsFrozen()

Cria uma cópia congelada do Freezable usando os valores atuais das propriedades. Como a cópia está congelada, quaisquer subobjetos congelados são copiados por referência.

(Herdado de Freezable)
GetCurrentValueAsFrozenCore(Freezable)

Torna a instância atual um clone congelado do especificado Freezable. Se o objeto tiver propriedades de dependência animadas, os seus valores animados atuais são copiados.

(Herdado de Freezable)
GetHashCode()

Obtém um código de hash para isto DependencyObject.

(Herdado de DependencyObject)
GetLocalValueEnumerator()

Cria um enumerador especializado para determinar quais as propriedades de dependência que têm valores localmente definidos neste DependencyObject.

(Herdado de DependencyObject)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
GetValue(DependencyProperty)

Devolve o valor efetivo atual de uma propriedade de dependência nesta instância de um DependencyObject.

(Herdado de DependencyObject)
InvalidateProperty(DependencyProperty)

Reavalia o valor efetivo da propriedade de dependência especificada.

(Herdado de DependencyObject)
MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
OnChanged()

Chamada quando o objeto atual Freezable é modificado.

(Herdado de Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty)

Este membro suporta a infraestrutura Windows Presentation Foundation (WPF) e não foi concebido para ser usado diretamente a partir do seu código.

(Herdado de Freezable)
OnFreezablePropertyChanged(DependencyObject, DependencyObject)

Assegura que os apontadores de contexto apropriados são estabelecidos para um DependencyObjectType membro de dados que acabou de ser definido.

(Herdado de Freezable)
OnPropertyChanged(DependencyPropertyChangedEventArgs)

Sobrepõe a DependencyObject implementação de OnPropertyChanged(DependencyPropertyChangedEventArgs) para também invocar quaisquer Changed manipuladores em resposta a uma alteração da propriedade de dependência do tipo Freezable.

(Herdado de Freezable)
ReadLocalValue(DependencyProperty)

Devolve o valor local de uma propriedade de dependência, se esta existir.

(Herdado de DependencyObject)
ReadPreamble()

Garante que está a ser acedido Freezable a partir de um thread válido. Os herdeiros de Freezable devem chamar este método no início de qualquer API que leia membros de dados que não são propriedades de dependência.

(Herdado de Freezable)
SetCurrentValue(DependencyProperty, Object)

Define o valor de uma propriedade de dependência sem alterar a sua fonte de valor.

(Herdado de DependencyObject)
SetValue(DependencyProperty, Object)

Define o valor local de uma propriedade de dependência, especificado pelo seu identificador de propriedade de dependência.

(Herdado de DependencyObject)
SetValue(DependencyPropertyKey, Object)

Define o valor local de uma propriedade de dependência somente de leitura, especificado pelo DependencyPropertyKey identificador da propriedade de dependência.

(Herdado de DependencyObject)
ShouldSerializeProperty(DependencyProperty)

Devolve um valor que indica se os processos de serialização devem serializar o valor da propriedade de dependência fornecida.

(Herdado de DependencyObject)
ToString()

Cria uma representação em cadeia deste objeto com base nas definições culturais atuais.

(Herdado de Camera)
ToString(IFormatProvider)

Cria uma representação de cordas da Câmara.

(Herdado de Camera)
VerifyAccess()

Faz cumprir que o thread que chama tem acesso a este DispatcherObject.

(Herdado de DispatcherObject)
WritePostscript()

Eleva o Changed evento para o Freezable e invoca o seu OnChanged() método. As classes que derivam de Freezable devem chamar este método no final de qualquer API que modifique membros de classe que não estejam armazenados como propriedades de dependência.

(Herdado de Freezable)
WritePreamble()

Verifica se o Freezable não está congelado e que está a ser acedido a partir de um contexto de threading válido. Freezable os herdeiros devem chamar este método no início de qualquer API que escreva para membros de dados que não sejam propriedades de dependência.

(Herdado de Freezable)

evento

Name Description
Changed

Ocorre quando o Freezable ou um objeto que contém é modificado.

(Herdado de Freezable)

Implementações de Interface Explícita

Name Description
IFormattable.ToString(String, IFormatProvider)

Formata o valor da instância atual usando o formato especificado.

(Herdado de Camera)

Aplica-se a