Share via


Manipulando superfícies de Device-Managed

Importante

Recomendamos que você use o driver de classe de caixa de entrada IPP da Microsoft, juntamente com o PSA (Aplicativos de Suporte para Impressão), para personalizar a experiência de impressão em Windows 10 e 11 para o desenvolvimento de dispositivos de impressora.

Para obter mais informações, consulte o Guia de design do aplicativo de suporte para impressão.

Quando o Unidrv renderiza imagens de página de impressão, ele usa superfícies de desenho gerenciadas por GDI. Todas as imagens são renderizadas como bitmaps. Para dispositivos com recursos que não podem ser explorados por esse cenário, como a capacidade de desenhar vetores, você pode fornecer suporte personalizado ao driver para uma superfície de desenho gerenciada pelo dispositivo. Para dar suporte a uma superfície gerenciada pelo dispositivo, você deve fornecer um plug-in de renderização que implemente o seguinte:

As funções de conexão não podem chamar de volta para os serviços de suporte prefixados em Eng da GDI ao desenhar em uma superfície gerenciada pelo dispositivo. No entanto, eles podem criar uma superfície de bitmap temporária e, em seguida, passar o identificador dessa superfície para funções de desenho prefixadas por Eng (consulte Renderizando um trabalho de impressão).

O método IPrintOemUni::D riverDMS é chamado sempre que um trabalho de impressão está prestes a ser renderizado, de modo que o plug-in de renderização pode especificar o tipo de superfície de renderização (gerenciada por GDI ou gerenciada pelo dispositivo) para cada trabalho. Basear a opção de superfície em uma opção selecionável na interface do usuário exige que você também forneça um plug-in de interface do usuário.

Desenhando texto em uma superfície de Device-Managed

O plug-in de renderização deve conectar a função DrvTextOut do Unidrv (juntamente com todas as outras funções de desenho DDI de gráficos). A criação de texto para uma superfície gerenciada pelo dispositivo envolve a interação entre as quatro funções a seguir:

As etapas envolvidas na exibição de texto em uma superfície gerenciada pelo dispositivo são as seguintes:

  1. A GDI chama a função DrvTextOut da Unidrv.

  2. Unidrv chama a função de conexão DrvTextOut do plug-in de renderização.

  3. A função de conexão envia comandos para o dispositivo para especificar o pincel, a rotação e a região de recorte do texto.

  4. A função de conexão chama o método IPrintOemDriverUni::D rvUniTextOut da Unidrv, que usa fontes baixadas para gerar o texto. Esse método também manipula o recorte baseado em glifo.

  5. Se IPrintOemDriverUni::D rvUniTextOut não puder usar uma fonte baixável (porque a fonte não está disponível ou está girada), ela chamará o método IPrintOemUni::TextOutAsBitmap do plug-in de renderização, que desenha o texto como um bitmap.

  6. Depois que IPrintOemDriverUni::D rvUniTextOut retornar, a função de gancho DrvTextOut deve desenhar sublinhados e strike-throughs, com base nos retângulos especificados pelo parâmetro prclExtra da função DrvTextOut, usando comandos de vetor (se houver suporte).