IVsGradient.DrawGradient(IntPtr, IntPtr, RECT[], RECT[]) Método

Definição

Desenha um determinado gradiente em um local especificado.

public:
 int DrawGradient(IntPtr hwnd, IntPtr hdc, cli::array <Microsoft::VisualStudio::OLE::Interop::RECT> ^ gradientRect, cli::array <Microsoft::VisualStudio::OLE::Interop::RECT> ^ sliceRect);
public int DrawGradient (IntPtr hwnd, IntPtr hdc, Microsoft.VisualStudio.OLE.Interop.RECT[] gradientRect, Microsoft.VisualStudio.OLE.Interop.RECT[] sliceRect);
abstract member DrawGradient : nativeint * nativeint * Microsoft.VisualStudio.OLE.Interop.RECT[] * Microsoft.VisualStudio.OLE.Interop.RECT[] -> int
Public Function DrawGradient (hwnd As IntPtr, hdc As IntPtr, gradientRect As RECT(), sliceRect As RECT()) As Integer

Parâmetros

hwnd
IntPtr

no Identificador de uma janela que contém a região a ser pintada com um gradiente.

hdc
IntPtr

no Identificador do contexto do dispositivo usado no desenho do gradiente.

gradientRect
RECT[]

no O retângulo de gradiente ou a região que o contém, definindo a extensão completa e a geometria sobre a qual o gradiente pode ser aplicado.

sliceRect
RECT[]

no O retângulo da fatia, definindo a região sobre a qual um gradiente é realmente pintado.

Retornos

Int32

Se o método for bem-sucedido, retornará S_OK. Se falhar, retornará um código de erro.

Comentários

Assinatura COM

De vsshell80. idl:

HRESULT IVsGradient::DrawGradient(  
   [in] HWND hwnd,  
   [in] HDC hdc,  
   [in] RECT * gradientRect,  
   [in] RECT * sliceRect  
);  

Ambos gradientRect e sliceRect devem ser definidos no sistema de coordenadas definido pela janela especificada pelo identificador, hwnd .

O SDK do ambiente dá suporte a dois tipos de gradientes estáticos e não estáticos.

Para obter informações sobre quais gradientes são estáticos e quais são não estáticos e as implicações disso, consulte __GRADIENTTYPE .

Para gradientes estáticos, o ambiente mantém uma definição permanente do retângulo de gradiente e o gradientRect parâmetro é ignorado.

O retângulo de fatia especificado pelo sliceRect parâmetro deve estar sempre contido dentro do retângulo definido pelo retângulo especificado pelo gradientRect parâmetro.

As duas regiões retangulares gradientRect e sliceRect definem como o DrawGradient método pinta um gradiente em um elemento de interface do usuário.

O gradientRect retângulo é chamado de retângulo de gradiente ou região de conteúdo. Especifica a extensão completa e o local em que um gradiente pode ser aplicado.

O sliceRect retângulo é chamado de retângulo de fatia e spec especifica a região em que o gradiente é realmente pintado.

O mascaramento de gradientes pode ser realizado usando gradiente de tamanho diferente e retângulos de fatia, onde o retângulo de fatia está contido no retângulo de gradiente. Nesse caso, apenas parte de um elemento de interface do usuário é pintada com um gradiente, mas o padrão de gradiente é preservado como se o retângulo de gradiente inteiro fosse pintado.

Por exemplo, pintar um quadro de 10 pixels de largura em uma região de 100 por 100 pixels de largura pode ser feito por

  1. definição de um retângulo de gradiente com uma RECT estrutura com cantos com um canto superior esquerdo em (0, 0) e um canto inferior direito em (100.100).

  2. definindo estruturas de fatias RECT de 4 10 pixels de largura,

    • um com um canto superior esquerdo em (0, 0) e um canto inferior direito em (100, 10)

    • um com um canto superior esquerdo em (0, 0) e um canto inferior direito em (10.100)

    • um com um canto superior esquerdo em (90, 0) e um canto inferior direito em (100.100)

    • um com um canto superior esquerdo em (0, 90) e um canto inferior direito em (100, 10)

  3. chamar IVsGradient.DrawGradient quatro vezes, uma vez para cada retângulo de fatia e sempre usar o mesmo retângulo de gradiente.

Além disso, a pintura retangular pode não ser satisfatória em determinadas circunstâncias, por exemplo, ao pintar um controle com cantos arredondados, uma guia de aletas do Shark ou uma região não retangular que não seja facilmente recortada ou mascarada.

Nesses casos, VSPackages deve criar o pincel para pintar um determinado gradiente com base na matriz ou no vetor de cores retornado pelo GetGradientVector método.

Por exemplo, guias de arquivo complicados poderiam ser desenhadas construindo os três componentes para a guia – o Fin, a área de texto e o final, onde os componentes seriam desenhados por meio da substituição de cores e alargamento. Cada pixel de uma determinada cor seria substituído pelo elemento na matriz retornada por GetGradientVector sua posição no eixo horizontal.

Para obter mais informações, consulte como: usar o suporte a gradiente do Visual Studio.

Aplica-se a