Aracılığıyla paylaş


Direct2D Kullanarak Görüntü İşleme

Direct2D, bir Direct2D yüzeyine yalnızca IDWriteTextFormat veya IDWriteTextLayout tarafından açıklanan biçimlendirmeye sahip metinleri işlemek için yöntemler sağlar.

IDWriteTextFormat Tarafından Tanımlanan Metnin Görselleştirilmesi

IDWriteTextFormat nesnesini kullanarak bir dizeyi biçimlendirmek için, tüm dizeyi aktarmak üzere Direct2Dtarafından sağlanan ID2D1RenderTarget::DrawText yöntemini kullanın.

  1. İşleme alanının boyutlarını alarak metin düzeninin alanını tanımlayın ve aynı boyutlara sahip bir Direct2D dikdörtgen oluşturun.

    D2D1_RECT_F layoutRect = D2D1::RectF(
        static_cast<FLOAT>(rc.left) / dpiScaleX_,
        static_cast<FLOAT>(rc.top) / dpiScaleY_,
        static_cast<FLOAT>(rc.right - rc.left) / dpiScaleX_,
        static_cast<FLOAT>(rc.bottom - rc.top) / dpiScaleY_
        );
    
    
  2. ID2D1RenderTarget::DrawText yöntemini ve IDWriteTextFormat nesnesini kullanarak metni ekrana aktarın. ID2D1RenderTarget::DrawText yöntemi aşağıdaki parametreleri alır:

    pRT_->DrawText(
        wszText_,        // The string to render.
        cTextLength_,    // The string's length.
        pTextFormat_,    // The text format.
        layoutRect,       // The region of the window where the text will be rendered.
        pBlackBrush_     // The brush used to draw the text.
        );
    
    

IDWriteText Düzen Nesnesi'ni İşleme

IDWriteTextLayout nesnesi tarafından belirtilen metin düzeni ayarlarında metin çizmek için, MultiformattedText::DrawText yöntemindeki kodu IDWriteTextLayout::DrawTextLayoutkullanacak şekilde değiştirin.

  1. Bir D2D1_POINT_2F değişkeni tanımlayın ve pencerenin sol üst noktasına ayarlayın.

    D2D1_POINT_2F origin = D2D1::Point2F(
        static_cast<FLOAT>(rc.left / dpiScaleX_),
        static_cast<FLOAT>(rc.top / dpiScaleY_)
        );
    
    
  2. Direct2D'nin ID2D1RenderTarget::DrawTextLayout yöntemini çağırarak ve IDWriteTextLayout işaretçisini aktararak metni ekrana yazdırın.

    pRT_->DrawTextLayout(
        origin,
        pTextLayout_,
        pBlackBrush_
        );