Manipuladores de miniaturas
O Windows Vista usa mais imagens em miniatura específicas do arquivo do que as versões anteriores do Windows. O Windows Vista usa-os em todos os modos de exibição, em caixas de diálogo e em qualquer tipo de arquivo que os forneça. Outros aplicativos também podem consumir sua miniatura. A exibição em miniatura também foi alterada. Agora, um espectro contínuo de tamanhos selecionáveis pelo usuário está disponível em vez dos tamanhos discretos, como Ícones e Miniaturas fornecidos no Windows XP.
Nota
Você pode ouvir essas miniaturas conhecidas como Ícones Dinâmicos.
Miniaturas de resolução de 32 bits e até 256 x 256 pixels geralmente são usadas na interface do usuário do Windows Vista. Os proprietários de formato de arquivo devem estar preparados para exibir suas miniaturas nesse tamanho. Eles também devem fornecer imagens não estáticas para suas miniaturas que refletem o conteúdo do arquivo específico. Por exemplo, a miniatura de um arquivo de texto deve mostrar uma versão em miniatura do documento, incluindo seu texto.
A interface IThumbnailProvider foi introduzida para tornar o fornecimento de uma miniatura mais fácil e simples do que no passado, quando IExtractImage teria sido usado em vez disso. Observe que o código existente que usa IExtractImage ainda é válido no Windows Vista. No entanto, IExtractImage não tem suporte no painel Detalhes do.
Este tópico discute o seguinte:
- processos em miniatura
- cache de miniaturas e de dimensionamento
- sobreposições em miniatura
- Adornos em miniatura
- registrando o manipulador de miniaturas
- tópicos relacionados
Processos em miniatura
Os manipuladores, incluindo manipuladores de miniaturas, são executados por padrão em um processo separado. Você pode forçar o manipulador a ser executado em processo passando um valor de NULL como o contexto de associação em uma chamada para IShellItem::BindToHandler, conforme mostrado aqui:
IShellItem::BindToHandler(NULL, BHID_ThumbnailHandler,..)
Você também pode recusar a execução fora do processo por padrão definindo a entrada DisableProcessIsolation no registro, conforme mostrado neste exemplo. O CLSID (identificador de classe) {E357FCCD-A995-4576-B01F-234630154E96} é o CLSID para implementações deIThumbnailProvider.
HKEY_CLASSES_ROOT
CLSID
{E357FCCD-A995-4576-B01F-234630154E96}
DisableProcessIsolation = 1
Cache e dimensionamento de miniaturas
Quando uma miniatura é necessária, o Windows verifica primeiro o cache de miniaturas da imagem. O extrator de miniatura será chamado se a imagem não for encontrada no cache. Ele também é chamado quando a hora da última modificação da imagem é posterior à da cópia no cache.
As imagens em miniatura nesse cache são armazenadas em um conjunto de tamanhos discretos. Todos os tamanhos são dados em pixels.
- 32 x 32
- 96x96
- 256x256
- 1024x1024
Nota
Esses valores estão sujeitos a alterações. O código não deve pressupor que qualquer tamanho específico sempre será usado.
Se uma imagem não for quadrada, você não deverá ajustá-la por conta própria. O Windows é responsável por respeitar a taxa de proporção original e preencher a imagem para um tamanho quadrado.
Quando uma imagem de um tamanho específico é solicitada, a menos que uma correspondência exata seja encontrada, o Windows Vista sempre recupera a próxima imagem maior e a dimensiona para baixo para o tamanho solicitado. Uma imagem nunca é dimensionada em tamanho, como foi o caso em versões anteriores do Windows.
A tabela a seguir fornece alguns exemplos da relação entre o tamanho solicitado e o tamanho disponível.
Tamanho máximo da imagem que você fornece | Tamanho solicitado pelo Extrator | Você fornece |
---|---|---|
156x120 | 256x256 | 156x120 (Não pad, manter taxa de proporção) |
2048x1024 | 256x256 | 256x128 (Não pad, manter taxa de proporção) |
Você pode declarar um ponto de corte como parte da entrada de ID do programa do aplicativo associado no registro. Abaixo desse tamanho, miniaturas não são usadas.
HKEY_CLASSES_ROOT
.{ProgId}
ThumbnailCutoff
A entrada ThumbnailCutoff é um desses valores REG_DWORD.
Valor | Corte | Diferenciação de HighDPI |
---|---|---|
0 | 32 x 32 | Sim |
1 | 16x16 | Sim |
2 | 48x48 | Sim |
3 | 16x16 | Sim |
Pontos altos por polegada (dpi) sensibilidade significa que as dimensões de pixel da miniatura se ajustam automaticamente para o dpi maior. Por exemplo, uma imagem 32x32 a 96 dpi seria uma imagem 40x40 a 120 dpi.
Se a entrada ThumbnailCutoff não for especificada, o corte padrão será 20x20 (não diferencia dpi).
Sobreposições em miniatura
As sobreposições em miniatura, uma pequena imagem exibida no canto inferior direito da miniatura, oferecem uma oportunidade para os desenvolvedores aplicarem a identificação da marca às miniaturas. As sobreposições são declaradas no registro como parte da entrada de ID do programa do aplicativo associado, conforme mostrado aqui:
HKEY_CLASSES_ROOT
.{ProgId}
TypeOverlay
A entrada TypeOverlay contém um valor REG_SZ interpretado da seguinte maneira:
- Se o valor for uma referência de recurso (um arquivo .ico inserido na DLL), como
ISVComponent.dll,-155
, essa imagem será usada como a sobreposição para arquivos com essa extensão de nome de arquivo. Observe que, neste exemplo, 155 é a ID do recurso e, se a DLL não estiver presente em um caminho padrão (como C:/Windows/System32), o caminho completo será necessário em vez de apenas o nome DLL. - Se o valor for uma cadeia de caracteres vazia, nenhuma sobreposição será aplicada à imagem.
- Se o valor não estiver presente, o ícone padrão do aplicativo associado será usado.
As sobreposições para suas miniaturas só devem ser fornecidas por meio desse mecanismo e aplicadas pelo Windows. Não aplique sobreposições por conta própria.
Adornos em miniatura
Adornos como sombras de soltar são aplicados a miniaturas com base no tema selecionado no momento do usuário. Adornos são fornecidos pelo Windows; não os crie por conta própria. O Windows pode alterar a aparência de adornos específicos a qualquer momento, portanto, se você tiver fornecido o seu próprio, correria o risco de ficar fora de sincronia com o sistema. Suas miniaturas podem acabar parecendo datadas ou fora do lugar.
Os adornos potenciais são declarados no registro como parte da entrada de ID do programa do aplicativo associado, conforme mostrado aqui:
HKEY_CLASSES_ROOT
.{ProgId}
Treatment
A entrada tratamento contém um destes valores REG_DWORD:
Valor | Significado |
---|---|
0 | Sem adorno |
1 | Soltar Sombra |
2 | Borda da foto |
3 | Sprockets de vídeo |
Uma sombra suspensa é aplicada a imagens por padrão.
Registrando seu manipulador de miniaturas
O registro de um manipulador de miniaturas é baseado em associações de arquivos padrão.
O GUID para a extensão shell do manipulador de miniaturas é E357FCCD-A995-4576-B01F-234630154E96
.
Tópicos relacionados