Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Not ediniz
Windows 10'daki uygulamalar için DirectComposition yerine Windows.UI.Composition API'lerini kullanmanızı öneririz. Daha fazla bilgi için bkz. Görsel katmanını kullanarak masaüstü uygulamanızı modernleştirme.
Bu konu, bir dikdörtgen kırpma nesnesi kullanarak bir görseli veya görsel ağacını nasıl kırpacağınızı göstermektedir.
Bu konudaki örnek, fare konumunda ortalanmış dikdörtgen bir kesiti tanımlar ve bu kesiti kompozisyon hedef penceresinin istemci alanında ortalanmış bir görsele uygular. Bu ekran görüntüsü, dikdörtgen klip nesnesinin görsele uygulanmasının sonucunu gösterir.
dikdörtgen klip nesnesi uygulamanın sonucu
Bilmeniz gerekenler
Teknolojileri
- DirectComposition
- Direct3D 11 Grafikleri
- DirectX Grafik Altyapısı (DXGI)
Önkoşullar
- C/C++
- Microsoft Win32
- Bileşen Nesne Modeli (COM)
Talimatlar
1. Adım: DirectComposition nesnelerini başlatma
- Cihaz nesnesini ve oluşturma hedef nesnesini oluşturun.
- Görsel oluşturun, içeriğini ayarlayın ve görsel ağacına ekleyin.
Daha fazla bilgi için bkz. DirectComposition'ı Başlatma Yöntemleri.
2. Adım: Dikdörtgen klip nesnesini oluşturma
dikdörtgen klip nesnesinin bir örneğini oluşturmak için IDCompositionDevice::CreateRectangleClip yöntemini kullanın.
HRESULT hr = S_OK;
// Create the rectangle clip object.
if (m_pClip == NULL)
{
hr = m_pDevice->CreateRectangleClip(&m_pClip);
}
3. Adım: Dikdörtgen klip nesnesinin özelliklerini ayarlama
Dikdörtgen dikdörtgenin özelliklerini ayarlamak için dikdörtgen klip nesnesinin IDCompositionRectangleClip arabiriminin yöntemlerini çağırın.
Aşağıdaki örnek, geçerli fare konumunun etrafında ortalanmış bir kesme dikdörtgeni tanımlar.
m_offsetX
ve m_offsetY
üye değişkenleri, görselin OffsetX ve OffsetY özelliklerinin değerlerini içerir.
if (SUCCEEDED(hr))
{
// Get the location of the mouse.
POINT ptMouse = { };
GetCursorPos(&ptMouse);
ScreenToClient(m_hwnd, &ptMouse);
// Create a 100-by-100 pixel rectangular clip that is
// centered at the mouse location, and is mapped to
// the rectangle of the visual.
m_pClip->SetLeft((ptMouse.x - m_offsetX) - 50.f);
m_pClip->SetTop((ptMouse.y - m_offsetY) - 50.f);
m_pClip->SetRight((ptMouse.x - m_offsetX) + 50.f);
m_pClip->SetBottom((ptMouse.y - m_offsetY) + 50.f);
}
IDCompositionRectangleClip arabiriminin yuvarlatılmış köşeleri olan bir klip dikdörtgeni tanımlamak için aşağıdaki yöntemleri içerdiğini unutmayın:
4. Adım: Görselin Clip özelliğini ayarlama
Görselin Clip özelliğini dikdörtgen klip nesnesiyle ilişkilendirmek için IDCompositionVisual::SetClip yöntemini kullanın.
if (SUCCEEDED(hr))
{
// Set the rectangle clip object as the Clip property
// of the visual.
hr = m_pVisual->SetClip(m_pClip);
}
5. Adım: Bileşimi işleme
Microsoft DirectComposition'a işlenmek üzere komutlar dizisini göndermek için IDCompositionDevice::Commit metodunu çağırın. Kırpma dikdörtgeninin uygulanmasının sonucu hedef pencerede görünür.
if (SUCCEEDED(hr))
{
// Commit the visual to be composed and displayed.
hr = m_pDevice->Commit();
}
6. Adım: DirectComposition nesnelerini serbest bırakma
Artık ihtiyacınız kalmadığında dikdörtgen klip nesnesini, cihaz nesnesini, oluşturma hedef nesnesini ve tüm görsel nesneleri serbestladığınızdan emin olun. Uygulama tanımlı SafeRelease makrosunu DirectComposition nesnelerini serbest bırakması için çağıran aşağıdaki örnek.
SafeRelease(&m_pClip);
SafeRelease(&m_pDevice);
SafeRelease(&m_pD3D11Device);
SafeRelease(&m_pCompTarget);
SafeRelease(&m_pVisual);
SafeRelease(&m_pSurface);
İlgili konular