Поделиться через


Интерфейс ID2D1Layer (d2d1.h)

Представляет резервное хранилище, необходимое для отрисовки слоя.

Наследование

Интерфейс ID2D1Layer наследуется от ID2D1Resource. ID2D1Layer также имеет следующие типы элементов:

Методы

Интерфейс ID2D1Layer содержит следующие методы.

 
ID2D1Layer::GetSize

Возвращает размер слоя в независимых от устройства пикселях.

Комментарии

Чтобы создать слой, вызовите метод CreateLayer целевого объекта отрисовки, где будет использоваться слой. Чтобы отрисовать слой, отправьте слой в целевой стек отрисовки, вызвав метод PushLayer . Завершив рисование на слое, вызовите метод PopLayer .

Между вызовами PushLayer и PopLayer слой используется и не может использоваться другим целевым объектом отрисовки.

Если размер слоя не указан, соответствующий вызов PushLayer определяет минимальный размер слоя на основе границ содержимого слоя и геометрической маски. Ресурс слоя может быть больше размера, необходимого для PushLayer без артефактов отрисовки.

Если указан размер слоя или если слой был использован, а требуемый размер резервного хранилища, вычисленный во время PushLayer , больше, чем слой, ресурс слоя монотонно расширяется на каждой оси, чтобы обеспечить его достаточно большой размер. Размер ресурса слоя никогда не уменьшается.

Создание объектов ID2D1Layer

Чтобы создать слой, вызовите метод CreateLayer целевого объекта отрисовки, где будет использоваться слой.

Слой — это ресурс, зависящий от устройства. Приложение должно создавать слои после инициализации целевого объекта отрисовки, с помощью которого будут использоваться слои, и повторно создавать слои при необходимости повторного создания целевого объекта отрисовки. (Дополнительные сведения о ресурсах см. в разделе Общие сведения о ресурсах.)

Примеры

В следующем примере слой используется для обрезки рисунка в геометрической маске. Полный пример см. в разделе Как обрезать геометрическую маску.

HRESULT DemoApp::RenderWithLayer(ID2D1RenderTarget *pRT)
{
    HRESULT hr = S_OK;

    // Create a layer.
    ID2D1Layer *pLayer = NULL;
    hr = pRT->CreateLayer(NULL, &pLayer);

    if (SUCCEEDED(hr))
    {
        pRT->SetTransform(D2D1::Matrix3x2F::Translation(350, 50));

        // Push the layer with the geometric mask.
        pRT->PushLayer(
            D2D1::LayerParameters(D2D1::InfiniteRect(), m_pPathGeometry),
            pLayer
            );
            
  
        pRT->DrawBitmap(m_pOrigBitmap, D2D1::RectF(0, 0, 200, 133));
        pRT->FillRectangle(D2D1::RectF(0.f, 0.f, 25.f, 25.f), m_pSolidColorBrush);  
        pRT->FillRectangle(D2D1::RectF(25.f, 25.f, 50.f, 50.f), m_pSolidColorBrush);
        pRT->FillRectangle(D2D1::RectF(50.f, 50.f, 75.f, 75.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(75.f, 75.f, 100.f, 100.f), m_pSolidColorBrush);    
        pRT->FillRectangle(D2D1::RectF(100.f, 100.f, 125.f, 125.f), m_pSolidColorBrush); 
        pRT->FillRectangle(D2D1::RectF(125.f, 125.f, 150.f, 150.f), m_pSolidColorBrush);    
        

        pRT->PopLayer();
    }

    SafeRelease(&pLayer);

    return hr;
}

Требования

   
Минимальная версия клиента Windows 7, Windows Vista с пакетом обновления 2 (SP2) и обновление платформы для Windows Vista [классические приложения | Приложения UWP]
Минимальная версия сервера Windows Server 2008 R2, Windows Server 2008 с пакетом обновления 2 (SP2) и Обновление платформы для Windows Server 2008 [классические приложения | Приложения UWP]
Целевая платформа Windows
Header d2d1.h

См. также раздел

ID2D1RenderTarget

ID2D1Resource

Общие сведения о слоях