Artigo: 81498 - Última revisão: sexta-feira, 11 de Fevereiro de 2005 - Revisão: 2.5 DIBs e respectiva utiliza
Nesta páginaSumárioSegue-se o texto do artigo "DIBs e respectivos utiliza". Este artigo está disponível no formato de ficheiro Ajuda do Windows na biblioteca de software da Microsoft em conjunto com o texto apresentado abaixo. Mais InformaçãoOs ficheiros seguintes estão disponíveis para transferência a partir do Centro de transferências da Microsoft: Dibs2.exe (http://download.microsoft.com/download/platformsdk/article/3.1/w31/en-us/dibs2.exe) Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base: 119591
(http://support.microsoft.com/kb/119591/EN-US/
)
Como obter ficheiros de suporte da Microsoft a partir de serviços on-line Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada que o ajudam a impedir alterações não autorizadas ao ficheiro. Este artigo descreve o conceito de (device-independent bitmap) DIB de definição e estrutura para a API que o utiliza. Incluídos é uma aplicação exemplo pequeno que ilustra alguns dos métodos mais comuns de utilizar DIBs para apresentar e manipular imagens digitais. Funções discutidas são GetDIBits() , SetDIBits() , CreateDIBitmap() , SetDIBitsToDevice() , StretchDIBits() e CreateDIBPatternBrush() . Este artigo não aborda com paletas DIBs. DESCRIÇÃO GERALUm device-independent bitmap (DIB) é um formato utilizado para definir mapas de bits independente do dispositivo de várias resoluções de cor. O objectivo principal DIBs é permita mapas de bits a ser movida de um dispositivo para outro (por conseguinte, a parte independente do dispositivo do nome). Um DIB é um formato externo, por oposição a um mapa de bits dependentes do dispositivo, que aparece no sistema como um objecto de mapa de bits (criado por uma aplicação utilizando CreateBitmap() , CreateCompatibleBitmap() , CreateBitmapIndirect() ou CreateDIBitmap() ). Um DIB normalmente é transportado em metaficheiros (normalmente utilizando a função StretchDIBits() ), ficheiros BMP e a área de transferência (formato de dados CF_DIB).Um DIB constituída por duas partes: os bits próprios e um cabeçalho que descreve o formato dos bits. O cabeçalho contém o formato de cor, uma tabela de cores e o tamanho do mapa de bits. O formato DIB actual suporta quatro resoluções de cor: 1 bit, 4 bits, 8 bits e 24 bits. Em DIBs de 1 bit 4-bit e 8 bits, os pixels são definidos pelos índices (da solução de bit adequado) na tabela de cores; 24 bits pixels são descritos como valores de 24 bits, de 1 byte cada de vermelho, verde e azul. As funções DIB são:
GetDIBits: Translates a device-dependent bitmap into the DIB
format
SetDIBits: Translates a DIB's information into device-
dependent form
CreateDIBitmap: Creates a device-dependent bitmap initialized with
DIB information
SetDIBitsToDevice: Sets a DIB directly to the output surface
StretchDIBits: Moves a rectangle from the DIB to a rectangle on
the destination surface, stretching or compressing
as necessary
CreateDIBPatternBrush: Creates a pattern brush using a DIB for the
bitmap description
INDEPENDÊNCIA DO DISPOSITIVO - HÁ É BOM PARA?Não foi possível em versões do Microsoft Windows gráfica ambiente anterior à 3.0 transferência os mapas de bits a cores de um dispositivo para outro. Com DIBs, cada dispositivo apresenta a imagem para a extensão da respectiva resolução de cor. Uma aplicação pode armazenar uma imagem no formato DIB e, em seguida, apresentá-lo, independentemente do dispositivo de saída; uma aplicação já não necessita de criar uma versão de cada imagem para cada tipo de dispositivo.Esta capacidade de transferência de imagem pode ser utilizada para imprimir imagens de meio-tom. Por exemplo, a função StretchDIBits() pode passar um DIB directamente para um controlador de impressora inteligente. Tendo em conta as informações de cores da imagem em vez de apenas uma versão Monocromática (o método tradicional), o controlador pode utilizar meios para imprimir uma imagem realista. Uma vez que o formato DIB publicamente estiver definido, uma aplicação pode manipulá-lo ao compor uma mensagem. De facto, uma aplicação pode criar uma imagem sem qualquer interacção com o Windows. Se o Windows não possui um desenho primitivo, a aplicação pode simulá-lo directamente DIB em vez de utilizar os primitivos de interface (GDI) de dispositivo de gráficos existente. Infelizmente, no Windows versões 3.0 e 3.1, não pode efectuar operações de saída directamente para um DIB GDI. FORMATOS DE FICHEIROS BMPA extensão do ficheiro de um ficheiro DIB do Windows é BMP. O ficheiro é constituída por uma estrutura BITMAPFILEHEADER seguida DIB propriamente dito. Infelizmente, porque a estrutura BITMAPFILEHEADER realmente nunca é transmitida para a API, nem todas as aplicações que gera ficheiros BMP preenche a estrutura de dados com cuidado. Para adicionar esta confusão, a definição "adequada" da estrutura está no odds com a documentação. Correctamente, a estrutura de dados contém os seguintes campos:
bfType A WORD that defines the type of file. It must be
'BM'.
bfSize A DWORD that specifies the size of the file in
bytes. The Microsoft Windows Software Development
Kit (SDK) documentation claims otherwise. To be on
the safe side, many applications calculate their
own sizes for reading in a file.
bfReserved1,
bfReserved2 WORDs that must be set to 0.
bfOffBits A DWORD that specifies the offset from the
beginning of the BITMAPFILEHEADER structure to the
start of the actual bits. The DIB header
immediately follows the file header, but the
actual image bits need not be placed next to the
headers in the file.
Para obter um exemplo de código que lê o ficheiro BMP, consulte o programa de exemplo. O cabeçalho DIBO cabeçalho, na realidade, constituída por duas adjacentes partes: o cabeçalho adequado e a tabela de cores. Ambos são combinados na estrutura de BITMAPINFO , que é que todas as APIs de DIB esperado.Windows versão 3.0 suporta dois variedades de cabeçalhos: BITMAPINFOHEADER e BITMAPCOREHEADER. Se possível, as aplicações devem utilizar apenas BITMAPINFOHEADERs. A definição BITMAPCOREHEADER baseia-se a definição de mapa de bits a partir da versão 1.1 do Gestor de apresentação e é suportada para compatibilidade. Durante uma operação de definição de DIB, a maior parte dos campos são já preenchidos por quem gerado o DIB. No entanto, fazer uma chamada de GetDIBits() fornece maior controlo. A forma como o cabeçalho é preenchido para esta operação define o DIB resultante, particularmente a resolução de cor. BITMAPINFOHEADER contém os seguintes campos:
biSize Should be set to sizeof(BITMAPINFOHEADER). This
field defines the size of the header (minus the
color table). If a new DIB definition is added, it
is identified by a new value for the size. This
field is also convenient for calculating a pointer
to the color table, which immediately follows the
BITMAPINFOHEADER.
biWidth, biHeight Define the width and the height of the bitmap in
pixels. They are DWORD values for future
expansion, and the code in Windows versions 3.0
and 3.1 ignores the high word (which should be set
to 0).
biPlanes Should always be 1. All DIB definitions rely on
biBitCount for color resolution definition.
biBitCount Defines the color resolution (in bits per pixel)
of the DIB. Only four values are valid for this
field: 1, 4, 8, and 24. New resolutions (16 bit,
for example) may be added in the future, but for
now only these four define a valid DIB. Choosing the
appropriate value when doing a GetDIBits is
discussed below. When performing a Set operation,
the value should already be defined for the bits.
biCompression Specifies the type of compression. Can be one of
three values: BI_RGB, BI_RLE4, or BI_RLE8. The most
common and useful choice, BI_RGB, defines a DIB in
which all is as it seems. Each block of biBitCount
bits defines an index (or RGB value for 24-bit
versions) into the color table. The other two
options specify that the DIB is stored (or will be
stored) using either the 4-bit or the 8-bit run
length encoding (RLE) scheme that Windows
supports. The RLE formats are especially useful
for animation applications and also usually
compress the bitmap. BI_RGB format is recommended
for almost all purposes. RLE versions, although
possibly smaller, are slower to decode, not as
widely supported, and extremely painful to band
properly.
biSizeImage Should contain the size of the bitmap proper in
bytes. I say "should" because the field is not
necessarily filled in. A call to GetDIBits to
generate a DIB fills in this field, but a DIB
created manually by an application might not have
this filled in. Calculating the size of a bitmap
is not hard:
biSizeImage = ((((biWidth * biBitCount) + 31)
& ~31) >> 3) * biHeight;
The crazy roundoffs and shifts account for the
bitmap being DWORD-aligned at the end of every
scanline. When nonzero, this field tells an
application how much storage space the DIB's bits
need. The biSizeImage field really becomes useful
when dealing with an RLE bitmap, the size of which
depends on how well the bitmap was encoded. If an
RLE bitmap is to be passed around, the biSizeImage
field is essential.
biXPelsPerMeter,
biYPelsPerMeter Define application-specified values for the
desirable dimensions of the bitmap. This
information can be used to maintain the physical
dimensions of an image across devices of different
resolutions. GDI never touches these fields. When
not filled in, they should both be set to 0.
biClrUsed Provides a way for getting smaller color tables.
When this field is set to 0, the number of colors
in the color table is based on the biBitCount
field (1 indicates 2 colors, 4 indicates 16, 8
indicates 256, and 24 indicates no color table). A
nonzero value specifies the exact number of colors
in the table. So, for example, if an 8-bit DIB
uses only 17 colors, then only those 17 colors
need to be defined in the table, and biClrUsed is
set to 17. Of course, no pixel can have an index
pointing past the end of the table.
Note: This field cannot be used during a GetDIBits
operation. GDI always fills a full-size color
table. The field is therefore more useful for
post-processing operations, when an application
trims down the contents of the DIB. If nonzero for
a 24-bit DIB, it indicates a table that the
application can use for color reference.
biClrImportant Specifies that the first x colors of the color
table are important to the DIB. If the rest of the
colors are not available, the image still retains
its meaning in an acceptable manner.
biClrImportant is purely for application use; GDI
does not touch this value. When this field is set
to 0, all the colors are important, or rather,
their relative importance has not been computed.
O tamanho da tabela de cores depende do valor de biBitCount (e podem ser substituídas utilizando o campo biClrUsed ; consulte acima): Todas as funções DIB incluem um parâmetro wUsage, que pode afectar a definição da tabela de cores. Este artigo evita utilizar paletas com DIBs e assume assim que wUsage é sempre definido como DIB_RGB_COLORS e que a tabela de cores, por isso, é sempre composta por valores RGB. Quando DIB_PAL_COLORS é utilizado, a tabela de cores constituída por valores WORD índices para a paleta lógico actualmente seleccionado. (Este tópico é abordado detalhadamente no artigo "Utilizar DIBs com paletas"). Formatos de transmissãoO cabeçalho define o formato do bits, mas todos os formatos de partilham as seguintes regras:
UTILIZAR A API DE DIBGetDIBits() e SetDIBits()Estas duas funções são utilizadas para converter device-independent mapas de bits em mapas de bits dependentes do dispositivo e vice-versa. SetDIBits() converte um DIB um mapa de bits dependentes do dispositivo e GetDIBits() gera um DIB a partir de um mapa de bits dependentes do dispositivo.O controlador de dispositivo referenciado por hDC transmitido para ambas as chamadas efectua a conversão real. Alguns controladores de dispositivo poderão não ter esta funcionalidade (por exemplo, um controlador de versão 2.0 do Windows ou um controlador de versão 3.0 do Windows primitivo). Neste caso, GDI simula a conversão mas apenas em monocromático--cor informações são convertidas para preto e branco. Na maior parte dos casos, no entanto, este não é uma preocupação. Todos os controladores de visualização self-respecting suportam esta funcionalidade e apenas alguns controladores de impressora não fornecem a conversão, normalmente monocromáticos controladores para o qual suffice simulações GDI. GetDeviceCaps(hDC, RASTERCAPS) devolve um valor WORD com sinalizadores definidos indicando que DIB funciona o controlador suporta. RC_DI_BITMAP indica suporte GetDIBits() e SetDIBits() , RC_DIBTODEV indica o suporte de SetDIBitsToDevice() e RC_STRETCHDIB indica o suporte de StretchDIBits() . Pode ser simulada qualquer função não suportada, apesar das simulações frequentemente não serem tão útil como o item real (principalmente como perdem informações a cores). Um dispositivo poderá não conseguir suportar a funcionalidade completa, mesmo se estiver definido um pouco. Por exemplo, um dispositivo pode suportar StretchDIBits mas apenas para stretches integrais. Infelizmente, uma aplicação não tem maneira para determinar a integridade da implementação. Nestes casos, a GDI simula a função. Os parâmetros são os mesmos para tanto GetDIBits() SetDIBits() :
GetDIBits(hDC, hBitmap, nStartScan, nNumScans, lpBits, lpBitmapInfo,
wUsage)
SetDIBits(hDC, hBitmap, nStartScan, nNumScans, lpBits, lpBitmapInfo,
wUsage)
hDC The device context (DC) responsible for the translation
operation. hDC must be compatible with the hBitmap
parameter.
hBitmap The device-dependent bitmap from which (Get) or to
which (Set) the DIB will be translated. Because of how
the simulation code operates, this bitmap should not be
currently selected into any DC.
nStartScan,
nNumScans Define the contents of lpBits. For example, a StartScan
of 5 indicates that lpBits points to the fifth scan of
the DIB. A NumScans of 14 indicates that lpBits points
to 14 scans of the DIB. Normally, nStartScan is set to
0 and nNumScans is set to biHeight to denote that the
whole DIB is pointed to by lpBits.
lpBits The actual bitmap of the DIB. The pixel information is
pointed to by this parameter.
lpBitmapInfo The header (with color table) defining the DIB. The
height and width in this header must match the height
and width of the hBitmap parameter (the translation is
always 1-to-1). The color resolution of the DIB need
not match that of hBitmap.
wUsage For the purposes of this article, assume this to be
DIB_RGB_COLORS, indicating RGB colors in the color
table.
Nota Para muitos impressoras que podem fazer os meios tons, este método não é preferencial; StretchDIBits (discutido no seguinte) é muito mais útil. Segue-se uma apresentação simples de um DIB a um DC (com não processamento de erros):
HBITMAP hBitmap;
HDC hMemDC;
hBitmap = CreateCompatibleBitmap(hDC, (WORD)lpInfo->biWidth,
lpInfo->(WORD)biHeight);
hMemDC = CreateCompatibleDC(hDC);
SetDIBits(hDC, hBitmap, 0, (WORD)lpInfo->biHeight, lpBits,
lpBitmapInfo, DIB_RGB_COLORS);
hBitmap = SelectObject(hMemDC, hBitmap);
BitBlt(hDC, 0, 0, (WORD)lpInfo->biWidth, (WORD)lpInfo->biHeight,
hMemDC, 0, 0, SRCCOPY);
DeleteObject(SelectObject(hMemDC, hBitmap));
DeleteDC(hMemDC);
Para GetDIBits() funcione correctamente, a aplicação tem de definir os seguintes campos no cabeçalho: biSize = sizeof(BITMAPINFOHEADER) biWidth = (width of the bitmap) biHeight = (height of the bitmap) biPlanes = 1 biBitCount = [desired color resolution (1, 4, 8, or 24)] biCompression = BI_RGB (For RLE information, see below.)
if (biBitCount != 24)
nSizeTable = (1 << biBitCount) * sizeof(RGBQUAD)
else
nSizeTable = 0;
Objectivos da aplicação para o DIB determinam que resolução de cores para escolher. A abordagem normal é gerar um DIB preserva as informações de cores do mapa de bits origem dependentes do dispositivo. Escolher um resulta de resolução inferior numa perda de informações de cores, que é normalmente indesejável. Utilizar sempre 24 bits resolução é desnecessária, no entanto, porque ao fazê-lo, adiciona uma resolução de cor mais se a origem tem 8 bits ou menos resolução. Os parâmetros nStartScan e nNumScans (residue de compatibilidade do Gestor de apresentação) foram concebidos para ser utilizado para representação por bandas. Se não está disponível para carregar DIB inteira na memória de uma peça memória suficiente, lpBits podem ser efectuadas para apontar para apenas uma parte dos bits. Considere o seguinte exemplo: CreateDIBitmap()O seguinte código demonstra chamada CreateDIBitmap() com as maiúsculas e minúsculas habitual:SetDIBitsToDevice()SetDIBitsToDevice() permite que uma aplicação definir um DIB directamente para uma superfície de dispositivo. Uma vez que esta função é um holdout de desenvolvimento inicial, a interface não está como refinado é possível. StretchDIBits() é uma função muito mais poderosa do que SetDIBitsToDevice() . StretchDIBits() faz tudo que SetDIBitsToDevice() e tem uma interface nicer. SetDIBitsToDevice() é limitado na forma como este processa metaficheiros porque que não escala e de representação por bandas com os parâmetros nStartScan e nNumScans é nontrivial na melhor. StretchDIBits() não irá permitir a representação por bandas.O seguinte código executa a funcionalidade SetDIBitsToDevice() o mapa de full bits (não faixas) utilizando StretchDIBits: DIB lidar com a cabeça para baixo é complicado quando efectuar uma definição parcial. Por exemplo, se uma aplicação pretende obter o inferior terceiro de um DIB é w por pixels h para o dispositivo em (x, y), a chamada deverá assemelhar-se a seguinte: StretchDIBits()Esta função é darling fazer tudo para apresentar um DIB na superfície de um dispositivo. É especialmente útil para metafiling e para imprimir, para o qual a capacidade de esticar é importante.É o uma orifício crítico na implementação do actual StretchDIBits() StretchDIBits() é suportada por controladores de impressora e não por muitos controladores de visualização. Deste modo, usar esta função repetidamente para esticar um DIB ao ecrã é significativamente mais lento que utilizar SetDIBits (para obter um mapa de bits dependentes do dispositivo) seguido de chamadas StretchBlt() repetidas. A implementação desta função no GDI é muito simples. Se o controlador de dispositivo pode processar a chamada propriamente dito, não. Caso contrário e a chamada é 1 para 1 e o dispositivo suporta SetDIBitsToDevice() , a chamada é convertida para uma chamada SetDIBitsToDevice() ao controlador. (Isto funciona apenas com SRCCOPY como o ROP.) Se nenhum destes métodos possível, CreateDIBitmap() é utilizado para criar uma versão dependentes do dispositivo do mapa de bits e StretchBlt denomina-se para efectuar o trabalho real. Os parâmetros para StretchDIBits() basicamente são a mesma que para StretchBlt() (com a origem hDC substituído por lpBits e lpInfo). Esta função não tem o nStartScan e os parâmetros nNumScans das outras funções DIB, lpBits sempre aponta para a digitalização do DIB primeira. Quando utilizar esta função para algo diferente stretches de mapa de bits completo, lembre-se todas as coordenadas de origem (os relacionados com o DIB) estão num sistema de cabeça para baixo. A função adequadamente irá inverter a imagem, mas o rectângulo de origem for definido com Y = 0 na parte inferior e extensões vai. Felizmente, as coordenadas x utilizam as mesmas convenções como Windows. Controladores de impressora que suportam esta funcionalidade (por exemplo, PSCRIPT e HPPCL) normalmente utilizam um algoritmo de meio-tom para exportar imagens a cores boa. Assim, manter DIBs na resolução de cor significativa máxima possível (normalmente, 8 bits) é desejável mesmo se o dispositivo de saída for monocromática, uma vez que continua útil para saída boa as informações da cor. Infelizmente, a maior parte dos controladores de impressora não suportam qualquer ROP diferente SRCCOPY. CreateDIBPatternBrush()Esta função permite que uma aplicação para criar um Pincel de padrão, especificando um DIB em vez de um mapa de bits dependentes do dispositivo, como utilizados na função CreatePatternBrush() . Um pincel criado utilizando esta função é utilizado semelhante a quaisquer outro Pincel. O DIB está activado para um mapa de bits dependentes do dispositivo momento SelectObject() para utilização pelo dispositivo. Este Pincel é semelhante a um Pincel de padrão padrão para o dispositivo.DIBS NA ÁREA DE TRANSFERÊNCIADois mecanismos base para efectuar DIBs na área de transferência estiverem a utilizar o formato de dados CF_DIB ou colocando o DIB num metaficheiro e utilizando o formato de dados CF_METAFILEPICT.O formato CF_DIB utiliza um DIB compactada, siga os bits imediatamente após o cabeçalho e a tabela de cores. Ao ler ou criar um DIB compactada, uma aplicação tem de calcular correctamente o tamanho da tabela cor para garantir que os bits no local correcto. Uma vez que todas as funções DIB esperam o DIB como dois ponteiros, uma para o cabeçalho e outra para os bits, o ponteiro de bits tem ser calculado antes do utilizar. (Para cálculos de tamanho da tabela de cores, consulte o exemplo de código na descrição da tabela de cores acima.) A forma mais simples para colocar um DIB para um metaficheiro é utilizar StretchDIBits() : FORMATOS DE RLEQuando o campo biCompression no cabeçalho de um DIB está definido como qualquer BI_RLE4 (para biBitCount = 4) ou BI_RLE8 (para biBitCount = 8), a imagem foi codificado run-length. É possível encontrar uma descrição dos esquemas de codificação no "Microsoft Windows Software Development Kit referência volume 2," na secção "BITMAPINFOHEADER" "tipos de dados e estruturas de" capítulo. O esquema básico envolve comprimir várias horizontalmente adjacentes, idênticos pixels para uma execução codificação. Por exemplo, 10 pixels de cor índice 17 codificados como uma execução do comprimento 10 e do índice 17. Códigos de fim de digitalização e delta move-se também forem fornecidos, na qual um X e um desvio Y são fornecidos para o pixel seguinte.Este tipo de codificação normalmente comprime o mapa de bits e também é útil para criar animações de tipo sprite, no qual apenas uma pequena parte de uma imagem altera em cada frame. As capacidades de animação são efectuadas utilizando códigos de delta para limitar o número de pixels, na realidade, ser definido. Ignorado por uma delta de mover os pixels são esquerda inalterados. As limitações da RLE DIBs principais são que uma aplicação pode facilmente determinar o tamanho do mapa de bits em bytes nem aponte para um determinado scanline sem descodificar o mapa de bits da verificação primeiro. O campo biSizeImage é útil para resolver o problema primeiro. Descodificar, codificação e geralmente manipular o RLE formato é mais lento e mais complicado do que o formato (BI_RGB) noncompressed. Algumas aplicações--por exemplo, Paintbrush--recusarem RLE DIBs de leitura. Apesar de todas as APIs aceitá-las, RLE DIBs provavelmente será um formato suportado universalmente. Além disso, devido a rarity relativo destes formatos, alguns controladores de dispositivo poderão não totalmente testado suporte para os processos de codificação e descodificação. Para gerar um DIB RLE, GetDIBits() é chamado com biCompression definido para o tipo de codificação pretendido. A quantidade de memória necessária para armazenar os bits não é calculada facilmente. Se GetDIBits() é chamado com lpBits definido como NULL, a quantidade de memória necessária para os bits é devolvida nos biSizeImage. Uma chamada subsequente com lpBits apontando para um bloco de memória correctamente tamanho devolve um mapa de bits codificado. Converter um DIB RLE num formulário dependentes do dispositivo requer sem um processamento especial. Algumas das funções conjunto podem ser utilizadas normalmente com um cabeçalho que contém os biSizeImage adequado e biCompression valores para fazer corresponder os bits. FALHAS DE DIBSProvavelmente, o limite maior de DIBs é que são mais lentos que os mapas de bits dependentes do dispositivo. Converter DIBs num formulário dependentes do dispositivo antes de que, na realidade, podem ser apresentados requer processamento extra, resultando numa sobrecarga adicional. Um mundo ideal, StretchDIBits() um 1 para 1 seria tão rápida como uma BitBlt() . Esta velocidade permitiria que uma aplicação funcione com eficácia no realm de mapa de bits lógico, com cores e o acesso total a cada pixel, independentemente das limitações do dispositivo físico.DIBs são baseadas num sistema de coordenadas é invertido relativo ao Windows, tornando a codificação um pouco frustrante e não intuitiva. Lembrar sempre este quirkiness deverá ajudar limite o número de iterações necessário para obter os mapas de bits correctamente alinhados. Pode obter cores utilizando DIBs de 24 bits, mas são muito lentos descodificar, ler e escrever. Isto é particularmente verdade em dispositivos de paleta de 8 bits, na qual tradução literalmente pode demorar minutos. Além disso, o tamanho vasto de DIBs de 24 bits torna um pouco unwieldy para utilização geral. PROBLEMAS RELACIONADOS COM O DIB IN WINDOWS VERSÃO 3.0Gravação de metaficheiro de chamadas de StretchDIBits() utilizar BITMAPCOREHEADER faz com que um EAU. Converta todos os cabeçalhos para o estilo BITMAPINFO para evitar este problema. Esta solução alternativa é recomendada para DIB geral de processamento.O código de simulação SetDIBits() para maior do que 64 K monocromático DIBs provoca falhas ou impressões erradas quando utiliza um SetDIBits() , um SetDIBitsToDevice() ou um StretchDIBits() para um controlador que não suporta SetDIBits() . Direitos de autor 1992 pela Microsoft Corporation. Todos os direitos reservados.
Tradução automáticaIMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado. Clique aqui para ver a versão em Inglês deste artigo: 81498
(http://support.microsoft.com/kb/81498/en-us/
)
| Outros Recursos Outros Sites de Suporte
ComunidadesTraduções de Artigos
|






Windows Live
Facebook
Twitter
Linkedin
Digg it
Yahoo
Delicious
StumbleUpon
Yammer
Reddit
Technorati
FriendFeed
Email



Voltar ao topo