PerspectiveCamera Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Představuje kameru s perspektivní projekcí.
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
- Dědičnost
-
PerspectiveCamera
Příklady
<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>
Poznámky
PerspectiveCamera určuje projekci 3D modelu na 2D vizuální plochu. Tato projekce zahrnuje foreshortening perspektivy. Jinými slovy popisuje frustrum, PerspectiveCamera jehož strany se sbíhají směrem k bodu na horizontu. Objekty blíže ke kameře se zdají být větší a objekty dál od kamery menší.
Následující diagram znázorňuje rozdíl mezi ortografickými a perspektivně předimenzovanými projekcemi kamery.
Konstruktory
PerspectiveCamera() |
Inicializuje novou instanci PerspectiveCamera třídy. |
PerspectiveCamera(Point3D, Vector3D, Vector3D, Double) |
Inicializuje novou instanci PerspectiveCamera třídy pomocí zadané pozice, směru a zorného pole. |
Pole
FieldOfViewProperty |
Identifikuje FieldOfView vlastnost závislosti. |
Vlastnosti
CanFreeze |
Získá hodnotu, která označuje, zda objekt lze změnit. (Zděděno od Freezable) |
DependencyObjectType |
DependencyObjectType Získá, který zabalí typ CLR této instance. (Zděděno od DependencyObject) |
Dispatcher |
Získá přidruženou Dispatcher k tomuto DispatcherObject . (Zděděno od DispatcherObject) |
FarPlaneDistance |
Získá nebo nastaví hodnotu, která určuje vzdálenost od kamery vzdálené roviny klipu kamery. (Zděděno od ProjectionCamera) |
FieldOfView |
Získá nebo nastaví hodnotu, která představuje vodorovné zorné pole kamery. |
HasAnimatedProperties |
Získá hodnotu, která označuje, zda jeden nebo více AnimationClock objektů je přidružena k některé z vlastností závislostí tohoto objektu. (Zděděno od Animatable) |
IsFrozen |
Získá hodnotu, která označuje, zda objekt je aktuálně modifikovatelný. (Zděděno od Freezable) |
IsSealed |
Získá hodnotu, která označuje, zda je tato instance aktuálně zapečetěna (jen pro čtení). (Zděděno od DependencyObject) |
LookDirection |
Získá nebo nastaví, Vector3D který definuje směr, ve kterém kamera hledá v souřadnicích světa. (Zděděno od ProjectionCamera) |
NearPlaneDistance |
Získá nebo nastaví hodnotu, která určuje vzdálenost od kamery v blízkosti roviny klipu kamery. (Zděděno od ProjectionCamera) |
Position |
Získá nebo nastaví pozici kamery v souřadnicích světa. (Zděděno od ProjectionCamera) |
Transform |
Získá nebo nastaví Transform3D použité na kameru. (Zděděno od Camera) |
UpDirection |
Získá nebo nastaví, Vector3D který definuje směr nahoru kamery. (Zděděno od ProjectionCamera) |
Metody
ApplyAnimationClock(DependencyProperty, AnimationClock) |
Použije na AnimationClock zadaný DependencyPropertyobjekt . Pokud je vlastnost již animovaná, SnapshotAndReplace použije se chování předání. (Zděděno od Animatable) |
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) |
Použije na AnimationClock zadaný DependencyPropertyobjekt . Pokud je vlastnost již animovaná, použije se zadaná HandoffBehavior vlastnost. (Zděděno od Animatable) |
BeginAnimation(DependencyProperty, AnimationTimeline) |
Použije animaci na zadaný DependencyPropertyobjekt . Animace se spustí při vykreslení dalšího snímku. Pokud je zadaná vlastnost již animované, SnapshotAndReplace použije se chování předání. (Zděděno od Animatable) |
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) |
Použije animaci na zadaný DependencyPropertyobjekt . Animace se spustí při vykreslení dalšího snímku. Pokud je zadaná vlastnost již animovaný, použije se zadaná HandoffBehavior vlastnost. (Zděděno od Animatable) |
CheckAccess() |
Určuje, zda má volající vlákno přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
ClearValue(DependencyProperty) |
Vymaže místní hodnotu vlastnosti. Vlastnost, která se má vymazat, je určena identifikátorem DependencyProperty . (Zděděno od DependencyObject) |
ClearValue(DependencyPropertyKey) |
Vymaže místní hodnotu vlastnosti jen pro čtení. Vlastnost, která se má vymazat, je určena parametrem DependencyPropertyKey. (Zděděno od DependencyObject) |
Clone() |
Vytvoří upravitelný klon tohoto PerspectiveCameraobjektu a vytváří hluboké kopie hodnot tohoto objektu. Při kopírování vlastností závislostí tato metoda kopíruje odkazy na prostředky a datové vazby (ale nemusí se už překládat), ale ne animace nebo jejich aktuální hodnoty. |
CloneCore(Freezable) |
Vytvoří instanci jako klon (hloubkovou kopii) zadaného Freezable pomocí základních (ne animovaných) hodnot vlastností. (Zděděno od Freezable) |
CloneCurrentValue() |
Vytvoří upravitelný klon tohoto PerspectiveCamera objektu a vytváří hluboké kopie aktuálních hodnot tohoto objektu. Odkazy na prostředky, datové vazby a animace se nekopírují, ale jejich aktuální hodnoty jsou. |
CloneCurrentValueCore(Freezable) |
Vytvoří instanci jako upravitelný klon (hloubkovou kopii) zadaného Freezable pomocí aktuálních hodnot vlastností. (Zděděno od Freezable) |
CoerceValue(DependencyProperty) |
Převede hodnotu zadané vlastnosti závislosti. Toho dosáhnete vyvoláním jakékoli CoerceValueCallback funkce zadané v metadatech vlastnosti pro vlastnost závislosti, protože existuje ve volajícím DependencyObjectobjektu . (Zděděno od DependencyObject) |
CreateInstance() |
Inicializuje novou instanci Freezable třídy. (Zděděno od Freezable) |
CreateInstanceCore() |
Při implementaci v odvozené třídě vytvoří novou instanci odvozené Freezable třídy. (Zděděno od Freezable) |
Equals(Object) |
Určuje, zda je zadaný DependencyObject ekvivalent k aktuálnímu DependencyObject. (Zděděno od DependencyObject) |
Freeze() |
Nastaví aktuální objekt jako nemodifikovatelný a nastaví jeho IsFrozen vlastnost na |
FreezeCore(Boolean) |
Způsobí, že tento Animatable objekt není upravitelný nebo určuje, zda jej lze změnit. (Zděděno od Animatable) |
GetAnimationBaseValue(DependencyProperty) |
Vrátí hodnotu, která není animovaná zadanou DependencyPropertyhodnotou . (Zděděno od Animatable) |
GetAsFrozen() |
Vytvoří zamrzlou kopii objektu Freezable, pomocí základních (ne animovaných) hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, všechny zmrazené pod objekty jsou zkopírovány odkazem. (Zděděno od Freezable) |
GetAsFrozenCore(Freezable) |
Vytvoří instanci jako zmrazený klon zadaného Freezable pomocí základních (neoměněných) hodnot vlastností. (Zděděno od Freezable) |
GetCurrentValueAsFrozen() |
Vytvoří zmrazenou kopii Freezable pomocí aktuálních hodnot vlastností. Vzhledem k tomu, že kopie je zamrzlá, všechny zmrazené pod objekty jsou zkopírovány odkazem. (Zděděno od Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
Vytvoří aktuální instanci jako zmrazený klon zadaného Freezableobjektu . Pokud má objekt animované vlastnosti závislostí, zkopírují se jeho aktuální animované hodnoty. (Zděděno od Freezable) |
GetHashCode() |
Získá hash kód pro tento DependencyObject. (Zděděno od DependencyObject) |
GetLocalValueEnumerator() |
Vytvoří specializovaný enumerátor pro určení vlastností závislostí, které mají místně nastavené hodnoty v tomto DependencyObjectobjektu . (Zděděno od DependencyObject) |
GetType() |
Získá aktuální Type instanci. (Zděděno od Object) |
GetValue(DependencyProperty) |
Vrátí aktuální efektivní hodnotu vlastnosti závislosti na této instanci objektu DependencyObject. (Zděděno od DependencyObject) |
InvalidateProperty(DependencyProperty) |
Znovu vyhodnotí efektivní hodnotu pro zadanou vlastnost závislosti. (Zděděno od DependencyObject) |
MemberwiseClone() |
Vytvoří mělkou kopii aktuálního Objectsouboru . (Zděděno od Object) |
OnChanged() |
Volá se při změně aktuálního Freezable objektu. (Zděděno od Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
Zajišťuje, aby byly pro datový člen, který byl právě nastaven, vytvořeny odpovídající kontextové DependencyObjectType ukazatele. (Zděděno od Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
Tento člen podporuje infrastrukturu Windows Presentation Foundation (WPF) a není určen k použití přímo z vašeho kódu. (Zděděno od Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
Přepíše implementaci DependencyObject tak, OnPropertyChanged(DependencyPropertyChangedEventArgs) aby také vyvolala všechny Changed obslužné rutiny v reakci na měnící se vlastnost závislosti typu Freezable. (Zděděno od Freezable) |
ReadLocalValue(DependencyProperty) |
Vrátí místní hodnotu vlastnosti závislosti, pokud existuje. (Zděděno od DependencyObject) |
ReadPreamble() |
Zajišťuje, že Freezable se k souboru přistupuje z platného vlákna. Dědiči Freezable musí tuto metodu volat na začátku jakéhokoli rozhraní API, které čte datové členy, které nejsou vlastnosti závislostí. (Zděděno od Freezable) |
SetCurrentValue(DependencyProperty, Object) |
Nastaví hodnotu vlastnosti závislosti beze změny jejího zdroje hodnoty. (Zděděno od DependencyObject) |
SetValue(DependencyProperty, Object) |
Nastaví místní hodnotu vlastnosti závislosti určenou identifikátorem vlastnosti závislosti. (Zděděno od DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
Nastaví místní hodnotu vlastnosti závislosti jen pro čtení určenou DependencyPropertyKey identifikátorem vlastnosti závislosti. (Zděděno od DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
Vrátí hodnotu, která označuje, zda serializační procesy mají serializovat hodnotu pro zadanou vlastnost závislosti. (Zděděno od DependencyObject) |
ToString() |
Vytvoří řetězcovou reprezentaci tohoto objektu na základě aktuálního nastavení jazykové verze. (Zděděno od Camera) |
ToString(IFormatProvider) |
Vytvoří řetězcovou reprezentaci kamery. (Zděděno od Camera) |
VerifyAccess() |
Vynutí, aby volající vlákno má přístup k tomuto DispatcherObject. (Zděděno od DispatcherObject) |
WritePostscript() |
Changed Vyvolá událost pro Freezable a vyvolá její OnChanged() metodu. Třídy odvozené z Freezable by měly tuto metodu volat na konci libovolného rozhraní API, které upravuje členy třídy, které nejsou uloženy jako vlastnosti závislostí. (Zděděno od Freezable) |
WritePreamble() |
Ověřuje, že Freezable objekt není zamrznutý a že se k němu přistupuje z platného kontextu podprocesů. Freezable Dědiče by měli tuto metodu volat na začátku jakéhokoli rozhraní API, které zapisuje do datových členů, které nejsou vlastnosti závislostí. (Zděděno od Freezable) |
Událost
Changed |
Nastane při změně objektu Freezable nebo objektu, který obsahuje. (Zděděno od Freezable) |
Explicitní implementace rozhraní
IFormattable.ToString(String, IFormatProvider) |
Formátuje hodnotu aktuální instance pomocí zadaného formátu. (Zděděno od Camera) |