D3DImage 클래스
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
사용자가 만든 Direct3D 화면을 표시하는 ImageSource입니다.
public ref class D3DImage : System::Windows::Media::ImageSource
public class D3DImage : System.Windows.Media.ImageSource
type D3DImage = class
inherit ImageSource
Public Class D3DImage
Inherits ImageSource
- 상속
예제
다음 코드 예제에서는 XAML에서 을 D3DImage 선언하는 방법을 보여 있습니다. 네임스페이 System.Windows.Interop 스는 기본 XAML 네임스페이스에 포함되지 않으므로 매핑해야 합니다. 자세한 내용은 연습: WPF에서 Direct3D9 콘텐츠 호스팅합니다.
<Window x:Class="D3DHost.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:i="clr-namespace:System.Windows.Interop;assembly=PresentationCore"
Title="MainWindow" Height="300" Width="300" Background="PaleGoldenrod">
<Grid>
<Image x:Name="imgelt">
<Image.Source>
<i:D3DImage x:Name="d3dimg" />
</Image.Source>
</Image>
</Grid>
</Window>
설명
사용 된 D3DImage Windows Presentation Foundation (WPF) 애플리케이션에서 Direct3D 콘텐츠를 호스트 하는 클래스입니다.
메서드를 Lock 호출하여 에서 표시하는 Direct3D 콘텐츠를 변경합니다 D3DImage. 메서드를 SetBackBuffer 호출하여 Direct3D 표면을 에 할당합니다 D3DImage. 메서드를 AddDirtyRect 호출하여 Direct3D 화면에 대한 업데이트를 추적합니다. 메서드를 Unlock 호출하여 변경된 영역을 표시합니다.
D3DImage 클래스는 백 버퍼와 프런트 버퍼라고 하는 두 개의 디스플레이 버퍼를 관리합니다. 백 버퍼는 Direct3D 표면입니다. 백 버퍼에 대한 변경 내용은 Unlock 메서드를 호출할 때 프런트 버퍼로 복사되며, 여기서 메서드는 하드웨어에 표시됩니다. 경우에 따라 프런트 버퍼를 사용할 수 없게 됩니다. 화면 잠금, Direct3D 애플리케이션을 제외 하는 전체 화면, 사용자 전환 또는 기타 시스템 활동과이 부족 한 가용성을 발생할 수 있습니다. WPF 애플리케이션을 처리 하 여 알려집니다 이런 경우는 IsFrontBufferAvailableChanged 이벤트입니다. 애플리케이션이 사용할 수 없게 되는 프런트 버퍼가에 반응 하는 방법을 소프트웨어 렌더링으로 대체 WPF 사용 여부에 따라 달라 집니다. 이 SetBackBuffer 메서드에는 WPF가 소프트웨어 렌더링으로 대체되는지 여부를 지정하는 매개 변수를 사용하는 오버로드가 있습니다.
WPF가 소프트웨어 렌더링으로 대체되지 않는 경우 사용할 수 없는 프런트 버퍼에 응답
SetBackBuffer(D3DResourceType, IntPtr) 오버로드를 호출하거나 enableSoftwareFallback
매개 변수가 false
로 설정된 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 오버로드를 호출하면 렌더링 시스템은 전면 버퍼를 사용할 수 없게 되고 아무것도 표시되지 않으면 백 버퍼에 대한 참조를 해제합니다. 프런트 버퍼가 다시 제공 되 면 렌더링 발생을 IsFrontBufferAvailableChanged WPF 애플리케이션에 알리는 이벤트입니다.
IsFrontBufferAvailableChanged 이벤트에 대한 이벤트 처리기를 만들어 유효한 Direct3D 표면을 사용하여 렌더링을 다시 시작할 수 있습니다. 렌더링을 다시 시작하려면 SetBackBuffer를 호출해야 합니다.
WPF가 소프트웨어 렌더링으로 대체되면 사용할 수 없는 프런트 버퍼에 응답
enableSoftwareFallback
매개 변수가 true
로 설정된 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 오버로드를 호출하는 경우 렌더링 시스템은 프런트 버퍼를 사용할 수 없게 되면 백 버퍼에 대한 참조를 유지하므로 프런트 버퍼를 다시 사용할 수 있을 때 SetBackBuffer를 호출할 필요가 없습니다. 사용자의 디바이스에 사용할 수 없게 되는 상황이 있을 수 있습니다. 이 경우 를 호출 SetBackBuffer 하여 백 버퍼에 대한 WPF의 참조를 해제합니다. 디바이스를 재설정 해야 할 경우 호출 SetBackBuffer 사용 하 여는 backBuffer
매개 변수 설정 null
, 다음 호출 SetBackBuffer 사용 하 여 다시 backBuffer
유효한 Direct3D 화면을로 설정 합니다.
참고
성능은 Direct3D 화면의 설정에 따라 크게 달라집니다. 자세한 내용은 Direct3D9 및 WPF 상호 운용성을 위한 성능 고려 사항을 참조하세요.
참고
D3DImage 매개 변수에 대해 enableSoftwareFallback
를 호출 SetBackBuffer(D3DResourceType, IntPtr, Boolean) 하고 지정 true
하지 않는 한 WPF가 원격 데스크톱 연결을 통해 소프트웨어에서 렌더링되는 경우 클래스는 Direct3D 콘텐츠를 표시하지 않습니다.
생성자
D3DImage() |
D3DImage 클래스의 새 인스턴스를 초기화합니다. |
D3DImage(Double, Double) |
지정된 디스플레이 해상도를 사용하여 D3DImage 클래스의 새 인스턴스를 초기화합니다. |
필드
IsFrontBufferAvailableProperty |
IsFrontBufferAvailable 종속성 속성을 나타냅니다. |
속성
CanFreeze |
개체를 수정 불가능으로 설정할 수 있는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Freezable) |
DependencyObjectType |
DependencyObjectType 이 instance CLR 형식을 래핑하는 을 가져옵니다. (다음에서 상속됨 DependencyObject) |
Dispatcher |
이 Dispatcher와 연결된 DispatcherObject를 가져옵니다. (다음에서 상속됨 DispatcherObject) |
HasAnimatedProperties |
하나 이상의 AnimationClock 개체가 이 개체의 종속성 속성과 연결되어 있는지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Animatable) |
Height |
D3DImage의 높이를 가져옵니다. |
IsFrontBufferAvailable |
프런트 버퍼가 있는지 여부를 나타내는 값을 가져옵니다. |
IsFrozen |
개체가 현재 수정 가능한지 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 Freezable) |
IsSealed |
이 인스턴스가 현재 봉인되어 있는지(읽기 전용인지) 여부를 나타내는 값을 가져옵니다. (다음에서 상속됨 DependencyObject) |
Metadata |
이미지 소스에 연결된 메타데이터를 가져옵니다. |
PixelHeight |
D3DImage의 높이(픽셀)를 가져옵니다. |
PixelWidth |
D3DImage의 너비(픽셀)를 가져옵니다. |
Width |
D3DImage의 너비를 가져옵니다. |
메서드
AddDirtyRect(Int32Rect) |
변경된 백 버퍼 영역을 지정합니다. |
ApplyAnimationClock(DependencyProperty, AnimationClock) |
지정된 DependencyProperty에 AnimationClock을 적용합니다. 속성에 이미 애니메이션 효과가 적용되어 있으면 SnapshotAndReplace 전달 동작이 사용됩니다. (다음에서 상속됨 Animatable) |
ApplyAnimationClock(DependencyProperty, AnimationClock, HandoffBehavior) |
지정된 DependencyProperty에 AnimationClock을 적용합니다. 속성에 이미 애니메이션이 적용되어 있으면 지정된 HandoffBehavior가 사용됩니다. (다음에서 상속됨 Animatable) |
BeginAnimation(DependencyProperty, AnimationTimeline) |
지정된 DependencyProperty에 애니메이션을 적용합니다. 애니메이션은 다음 프레임을 렌더링할 때 시작됩니다. 지정된 속성에 이미 애니메이션 효과가 적용되어 있으면 SnapshotAndReplace 전달 동작이 사용됩니다. (다음에서 상속됨 Animatable) |
BeginAnimation(DependencyProperty, AnimationTimeline, HandoffBehavior) |
지정된 DependencyProperty에 애니메이션을 적용합니다. 애니메이션은 다음 프레임을 렌더링할 때 시작됩니다. 지정된 속성에 이미 애니메이션이 적용되어 있으면 지정된 HandoffBehavior가 사용됩니다. (다음에서 상속됨 Animatable) |
CheckAccess() |
호출 스레드가 이 DispatcherObject에 액세스할 수 있는지 여부를 확인합니다. (다음에서 상속됨 DispatcherObject) |
ClearValue(DependencyProperty) |
속성의 로컬 값을 지웁니다. 지울 속성이 DependencyProperty 식별자에서 지정됩니다. (다음에서 상속됨 DependencyObject) |
ClearValue(DependencyPropertyKey) |
읽기 전용 속성의 로컬 값을 지웁니다. 선언할 속성이 DependencyPropertyKey에서 지정됩니다. (다음에서 상속됨 DependencyObject) |
Clone() |
이 개체 값의 전체 복사본을 만들어 이 D3DImage 개체의 수정 가능한 복제본을 만듭니다. 종속성 속성을 복사하는 경우 이 메서드는 리소스 참조와 데이터 바인딩을 복사하지만 이러한 요소는 더 이상 확인되지 않으며 애니메이션이나 해당 현재 값을 복사하지 않습니다. |
CloneCore(Freezable) |
기본(애니메이션이 적용되지 않은) 속성 값을 사용하여 인스턴스를 지정된 Freezable의 복제본(전체 복사본)으로 만듭니다. |
CloneCurrentValue() |
D3DImage 개체의 현재 값에 대한 전체 복사본을 만들어 이 개체의 수정 가능한 복제본을 만듭니다. 리소스 참조, 데이터 바인딩 및 애니메이션은 복사되지 않지만 이러한 요소의 현재 값은 복사됩니다. |
CloneCurrentValueCore(Freezable) |
현재 속성 값을 사용하여 이 인스턴스를 지정된 Freezable의 수정 가능한 클론(전체 복사본)으로 만듭니다. |
CoerceValue(DependencyProperty) |
지정된 종속성 속성의 값을 강제 변환합니다. 호출하는 DependencyObject에 있으므로 이 작업은 종속성 속성의 속성 메타데이터에 지정된 CoerceValueCallback 함수를 호출하여 수행합니다. (다음에서 상속됨 DependencyObject) |
CopyBackBuffer() |
D3DImage의 소프트웨어 복사본을 만듭니다. |
CreateInstance() |
Freezable 클래스의 새 인스턴스를 초기화합니다. (다음에서 상속됨 Freezable) |
CreateInstanceCore() |
파생 클래스에서 구현되는 경우 D3DImage 파생 클래스의 새 인스턴스를 만듭니다. |
Equals(Object) |
제공된 DependencyObject가 현재 DependencyObject에 해당하는지 여부를 확인합니다. (다음에서 상속됨 DependencyObject) |
Finalize() |
가비지 컬렉션에 의해 D3DImage가 회수되기 전에 리소스를 해제하고 기타 정리 작업을 수행합니다. |
Freeze() |
현재 개체를 수정할 수 없게 설정하고 해당 IsFrozen 속성을 |
FreezeCore(Boolean) |
D3DImage를 수정할 수 없게 만들거나, 수정할 수 없게 만들 수 있는지 여부를 결정합니다. |
GetAnimationBaseValue(DependencyProperty) |
지정된 DependencyProperty의 애니메이션이 적용되지 않은 값을 반환합니다. (다음에서 상속됨 Animatable) |
GetAsFrozen() |
애니메이션이 적용되지 않은 기준 속성 값을 사용하여 Freezable의 고정된 복사본을 만듭니다. 복사본이 고정되므로 고정된 하위 개체는 모두 참조를 통해 복사됩니다. (다음에서 상속됨 Freezable) |
GetAsFrozenCore(Freezable) |
기본(애니메이션이 적용되지 않은) 속성 값을 사용하여 인스턴스를 지정된 Freezable의 고정된 복제본으로 만듭니다. |
GetCurrentValueAsFrozen() |
현재 속성 값을 사용하여 Freezable의 고정된 복사본을 만듭니다. 복사본이 고정되므로 고정된 하위 개체는 모두 참조를 통해 복사됩니다. (다음에서 상속됨 Freezable) |
GetCurrentValueAsFrozenCore(Freezable) |
현재 인스턴스를 지정된 Freezable의 고정 클론으로 만듭니다. 개체에 애니메이션 효과를 준 종속성 속성이 있는 경우 애니메이션 효과를 준 현재 값이 복사됩니다. |
GetHashCode() |
이 DependencyObject의 해시 코드를 가져옵니다. (다음에서 상속됨 DependencyObject) |
GetLocalValueEnumerator() |
이 DependencyObject에 대해 로컬로 값을 설정한 종속성 속성을 확인하기 위한 특수 열거자를 만듭니다. (다음에서 상속됨 DependencyObject) |
GetType() |
현재 인스턴스의 Type을 가져옵니다. (다음에서 상속됨 Object) |
GetValue(DependencyProperty) |
이 DependencyObject의 인스턴스에서 종속성 속성의 현재 유효 값을 반환합니다. (다음에서 상속됨 DependencyObject) |
InvalidateProperty(DependencyProperty) |
지정된 종속성 속성의 유효 값을 다시 계산합니다. (다음에서 상속됨 DependencyObject) |
Lock() |
D3DImage를 잠그고 백 버퍼에 대한 작업을 사용할 수 있게 합니다. |
MemberwiseClone() |
현재 Object의 단순 복사본을 만듭니다. (다음에서 상속됨 Object) |
OnChanged() |
현재 Freezable 개체가 수정될 때 호출됩니다. (다음에서 상속됨 Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject) |
방금 설정된 DependencyObjectType 데이터 멤버에 대한 적절한 컨텍스트 포인터를 설정합니다. (다음에서 상속됨 Freezable) |
OnFreezablePropertyChanged(DependencyObject, DependencyObject, DependencyProperty) |
이 멤버는 WPF(Windows Presentation Foundation) 인프라를 지원하며 코드에서 직접 사용할 수 없습니다. (다음에서 상속됨 Freezable) |
OnPropertyChanged(DependencyPropertyChangedEventArgs) |
OnPropertyChanged(DependencyPropertyChangedEventArgs)의 DependencyObject 구현을 재정의하여 Freezable 형식의 변화하는 종속성 속성에 대한 응답으로 Changed 처리기도 호출합니다. (다음에서 상속됨 Freezable) |
ReadLocalValue(DependencyProperty) |
종속성 속성의 로컬 값을 반환합니다(있는 경우). (다음에서 상속됨 DependencyObject) |
ReadPreamble() |
유효한 스레드에서 Freezable에 액세스하고 있는지 확인합니다. Freezable 상속자는 종속성 속성이 아닌 데이터 멤버를 읽는 API의 시작 부분에서 이 메서드를 호출해야 합니다. (다음에서 상속됨 Freezable) |
SetBackBuffer(D3DResourceType, IntPtr) |
Direct3D 화면을 백 버퍼의 소스로 할당합니다. |
SetBackBuffer(D3DResourceType, IntPtr, Boolean) |
Direct3D 화면을 백 버퍼의 소스로 할당합니다. |
SetCurrentValue(DependencyProperty, Object) |
해당 값 소스를 변경하지 않고 종속성 속성의 값을 설정합니다. (다음에서 상속됨 DependencyObject) |
SetValue(DependencyProperty, Object) |
지정된 종속성 속성 식별자를 가진 종속성 속성의 로컬 값을 설정합니다. (다음에서 상속됨 DependencyObject) |
SetValue(DependencyPropertyKey, Object) |
종속성 속성의 DependencyPropertyKey 식별자에 의해 지정된 읽기 전용 종속성 속성의 로컬 값을 설정합니다. (다음에서 상속됨 DependencyObject) |
ShouldSerializeProperty(DependencyProperty) |
serialization 프로세스에서 지정된 종속성 속성의 값을 직렬화해야 하는지 여부를 나타내는 값을 반환합니다. (다음에서 상속됨 DependencyObject) |
ToString() |
현재 문화권을 기준으로 이 개체의 문자열 표현을 만듭니다. (다음에서 상속됨 ImageSource) |
ToString(IFormatProvider) |
전달된 IFormatProvider를 기준으로 이 개체의 문자열 표현을 만듭니다. 공급자가 |
TryLock(Duration) |
D3DImage를 잠그려고 하고 지정된 기간 동안 기다립니다. |
Unlock() |
D3DImage의 잠금 횟수를 줄입니다. |
VerifyAccess() |
호출 스레드에서 이 DispatcherObject에 액세스할 수 있는지 확인합니다. (다음에서 상속됨 DispatcherObject) |
WritePostscript() |
Changed 에 대한 Freezable 이벤트를 발생시키고 해당 OnChanged() 메서드를 호출합니다. Freezable에서 파생된 클래스는 종속성 속성으로 저장되지 않은 클래스 멤버를 수정하는 모든 API의 끝에서 이 메서드를 호출해야 합니다. (다음에서 상속됨 Freezable) |
WritePreamble() |
Freezable이 고정되어 있지 않고 유효한 스레드 컨텍스트에서 액세스되고 있는지 확인합니다. Freezable 상속자는 종속성 속성이 아닌 데이터 멤버에 쓰는 API의 시작 부분에서 이 메서드를 호출해야 합니다. (다음에서 상속됨 Freezable) |
이벤트
Changed |
Freezable 또는 여기에 들어 있는 개체가 수정될 때 발생합니다. (다음에서 상속됨 Freezable) |
IsFrontBufferAvailableChanged |
IsFrontBufferAvailable 속성이 변경되면 발생합니다. |
명시적 인터페이스 구현
IFormattable.ToString(String, IFormatProvider) |
지정된 형식을 사용하여 현재 인스턴스 값의 형식을 지정합니다. (다음에서 상속됨 ImageSource) |
적용 대상
.NET