Makale numarası: 81498 - Son Gözden Geçirme: 11 Şubat 2005 Cuma - Gözden geçirme: 2.5 DIBs ve kendi kullanır
Bu SayfadaÖzetAşağıdaki makalenin "Dıb'leri ve Their kullanan" metindir. Bu makalede, Windows Yardım dosyası biçiminde aşağıda gösterilen metin yanında Microsoft yazılım kitaplığı için kullanılabilir. Daha fazla bilgiAşağıdaki dosyalar Microsoft Yükleme Merkezi'nden yüklenebilir: Dibs2.exe (http://download.microsoft.com/download/platformsdk/article/3.1/w31/en-us/dibs2.exe) Microsoft destek dosyalarını karşıdan yükleme konusunda ek bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın: 119591
(http://support.microsoft.com/kb/119591/EN-US/
)
Microsoft Destek Dosyaları Çevrimiçi Hizmetler'den Nasıl Alınır Microsoft bu dosyada virüs taraması yapmıştır. Microsoft, dosyanın kullanıma sunulduğu tarihteki en güncel virüs tarama yazılımını kullanmıştır. Dosya, üzerinde herhangi bir yetkisiz değişiklik yapılmasını engellemeye yardım eden geliştirilmiş güvenliğe sahip sunucularda depolanır. Bu makalede tanımlama ve yapı DIB (aygıt bağımsız bit eşlem) kavramı kullandığı apı anlatılır. Bulunan dijital resimleri görüntülemek ve Dıb'leri kullanmanın en yaygın yöntemlerden bazılarını gösteren bir küçük bir örnek uygulamasıdır. Açıklanan GetDIBits()SetDIBits(), CreateDIBitmap(), SetDIBitsToDevice(), StretchDIBits() ve CreateDIBPatternBrush() işlevlerdir. Paletleri Dıb'leri ile kullanarak bu makalede anlatılmamaktadır. GENEL BAKIŞAygıttan bağımsız bit eşlem (DIB) aygıttan bağımsız bit eşlemleri çeşitli renk çözünürlükte tanımlamak için kullanılan bir biçimidir. Dıb'leri ana amacı, bir aygıttan diğerine taşınması bit eşlemleri sağlamaktır (dolayısıyla, aygıttan bağımsız adının bir parçası). Bir DIB bir dış görünür (CreateBitmap(), CreateCompatibleBitmap(), CreateBitmapIndirect() veya CreateDIBitmap() kullanarak bir uygulama tarafından oluşturulan) bir bit eşlem nesnesi sistemdeki bir aygıta bağımlı bit eşlem için tersine biçimdir. Bir DIB meta dosyaları (genellikle StretchDIBits() işlevini kullanarak), BMP dosyaları ve Pano (CF_DIB veri biçimi) normal olarak aktarıldıkları.Bir DIB iki kısımdan oluşur: bit kendileri ve bitlerin biçimini tanımlayan bir üstbilgi. Üstbilgi, renk biçimi, bir renk tablosu ve bit eşlem boyutunu içerir. Geçerli DIB biçiminde, dört renk çözünürlüğü destekler: 1 bit 4 bit, 8 bit ve 24 bit. 8-Bit 1-bit ve 4-bit Dıb'leri, piksellerin renk tabloya uygun biti çözümlemesi), (dizinler tarafından tanımlanır; 24-bit piksel 24 bitlik değerler, 1 bayt her kırmızı, yeşil ve mavi olarak açıklanmıştır. DIB işlevler şunlardır:
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
AYGIT BAĞIMSIZLIĞI - BU NEDİR İÇİN İYİ?Renkli bit eşlemler bir aygıttan diğerine aktarılmasını 3. 0 ' Microsoft Windows grafik ortamını önceki sürümlerinde mümkün olmadı. Dıb'leri ile her aygıt, görüntü için renk çözünürlüğü kapsamını görüntüler. Uygulama görüntü DIB) biçiminde depolar ve sonra da, çıktı aygıtından bağımsız olarak görüntülemek, uygulama artık oluşturmak her bir görüntü aygıtı her tür için genel bir sürümü.Bu görüntü aktarma yeteneği, noktalı resim görüntüleri yazdırmak için kullanılabilir. Örneğin, StretchDIBits() işlev, doğrudan bir akıllı bir yazıcı sürücüsü bir DIB iletebilirsiniz. Resmin yerine, yalnızca tek renkli bir sürüm (Geleneksel yöntemi) tam renkli bilgi verilen, sürücü, gerçekçi bir resmi yazdırmak için noktalı resim kullanabilirsiniz. Uygulama DIB) biçiminde genel olarak tanımlı olduğundan hızlı işleyebilirsiniz. Aslında, bir uygulama Windows ile herhangi bir etkileşimi olmaksızın görüntü oluşturabilirsiniz. Windows, bir çizim temel yoksa, uygulama, varolan grafik aygıt arabirimi (GDI) temel öğeler yerine doğrudan DIB içine benzetimini yapabilirsiniz. Ne yazık ki, Windows sürüm 3.0 ve 3.1 altında GDI doğrudan DIB çıktı işlemlerini gerçekleştiremezsiniz. bmp DOSYA BİÇİMLERİWindows DIB dosyasının dosya BMP uzantısıdır. Dosyayı DIB tarafından izlenen bir BITMAPFILEHEADER yapısı oluşur. Ne yazık ki, BITMAPFILEHEADER yapısını gerçekte hiçbir zaman APı'SINE geçirilen çünkü veri yapısını dikkatle BMP dosyaları oluşturan her uygulama doldurur. Bu karışıklığı için "uygun" tanımı yapısını belgelerinize adresindeki odds eklemektir. Düzgün veri yapısı, aşağıdaki alanları içerir:
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.
BMP dosyasını okur bir kod örneği, örnek program bakın. DIB başlığıBaşlık, gerçekte komşu iki bölümden oluşur: uygun başlık ve renk tablosu. Her ikisi de, ne, tüm DIB Apı'lar beklediğiniz BITMAPINFO yapısı içinde birleştirilir.<a1>Windows</a1> sürüm 3.0, başlıklarının iki çeşitlemelerine destekler: BITMAPINFOHEADER ve BITMAPCOREHEADER. En tüm Olanaklıysa, uygulamalar yalnızca BITMAPINFOHEADERs kullanmalıdır. BITMAPCOREHEADER tanım sunu Yöneticisi sürüm 1.1 bit eşlem tanımından dayanır ve uyumluluk için desteklenir. DIB ayarı işlemi sırasında çoğu alanları zaten doldurulmuştur tarafından whoever DIB oluşturulur. Bir GetDIBits() arama yaparsanız, ancak daha fazla denetim sağlar. Bu işlem için başlık doldurulduğunda nasıl, elde edilen DIB, özellikle kendi renk çözünürlüğünü tanımlar. BITMAPINFOHEADER aşağıdaki alanları içerir:
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.
Renk tablosunun boyutunu biBitCount değerine bağlı (ve biClrUsed alanını kullanarak geçersiz kılınabilir; yukarıya bakın): Tüm DIB işlevleri <a0>Renk</a0> tablosunun tanımı etkileyebilir wUsage parametre içerir. Bu makalede, paletleri Dıb'leri ile kullanarak önler ve böylece wUsage her zaman için DIB_RGB_COLORS ayarlanır ve renk tablo bu nedenle her zaman olduğunu, RGB değerlerini oluşan olduğunu varsayar. Renk tablosu DIB_PAL_COLORS kullanıldığında, dizin, seçili mantıksal palet içine WORD değerler oluşur. (Bu konuda "Dıb'leri paletleri ile kullanma" makalesinde ayrıntılı olarak ele alınmıştır.) Bit biçimlerÜstbilgi bitlerin biçimini tanımlar, ancak tüm biçimler, aşağıdaki kurallar paylaşın:
dib APİ'Nİ KULLANMAGetDIBits() ve SetDIBits()Bu iki işlevi, aygıttan bağımsız bit eşlemleri içine aygıta bağımlı bit eşlemler (veya tersi dönüştürmek için kullanılır. SetDIBits() aygıta bağımlı bit eşlem için bir DIB dönüştürür ve GetDIBits() aygıta bağımlı bit eşlem ' bir DIB oluşturur.Her iki çağrıları geçirilen hDC tarafından başvuruda bulunulan aygıt sürücüsü, gerçek çevirisini gerçekleştirir. Bazı aygıt sürücülerini bu işlevi, (örneğin, bir <a0>Windows</a0> sürümü 2.0 sürücüsü veya bir temel Windows sürüm 3.0 sürücü) olabilir. Bu durumda, GDI çevirisini taklit eder, ancak yalnızca tek içinde--siyah-beyaz renk bilgilerini dönüştürülür. Ço?unlukla, ancak, bu önemli değildir. Bu işlev tüm self-respecting görüntü sürücüleri destekler ve yalnızca birkaç yazıcı sürücüleri sağlamaz çeviri, genellikle tek renkli sürücüleri için GDI benzetimlerini yeterli. GetDeviceCaps(hDC, RASTERCAPS), hangi DIB sürücünün desteklediği işlev gösteren ayarlamak bayraklarıyla WORD değeri döndürür. RC_DI_BITMAP GetDIBits() ve SetDIBits(), RC_DIBTODEV desteği SetDIBitsToDevice() desteğini gösterir ve RC_STRETCHDIB StretchDIBits() desteğini gösterir gösterir. (Çoğunlukla renk bilgiler kayıp olduğundan) benzetimlerini gerçek şeyi gibi yararlı sık olmasa da herhangi bir işlev desteklenmiyor, Benzetimli. Bir aygıt, bir bit olarak ayarlanmış olsa bile, tüm işlevlerini desteklemek yeniden yükleyemeyebilirsiniz. Örneğin, bir aygıtı yalnızca integral stretches için StretchDIBits desteği. Ne yazık ki, bir uygulama, uygulama completeness belirlemek için bir yol vardır. Bu gibi durumlarda, GDI işlevi taklit eder. Parametreler GetDIBits() hem de SetDIBits() için aynıdır:
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.
Not Noktalı resim yapabileceğiniz birçok yazıcı, bu yöntem tercih edilir; (aşağıdaki ele) StretchDIBits daha kullanışlıdır. Bir DIB (hiçbir hata işleme ile) bir DC için basit bir görünümünü aşağıdadır:
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);
Başlıkta aşağıdaki alanları için uygulama düzgün çalışması için GetDIBits(), gerekli: 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;
Uygulamanın amaçları için DIB seçmek için hangi renk çözünürlüğünü belirleyin. Normal bir yaklaşım, kaynak aygıta bağımlı bit eşlemin renk bilgilerini koruyan bir DIB oluşturmaktır. Küçük bir çözümleme sonuçları renk bilgilerinin kaybolmasına seçme, genellikle istenmeyen olduğu. Kaynak 8-bit veya daha düşük bir çözünürlük varsa, her zaman kullanarak 24 bit çözümlemesi gereksizdir, ancak bunu yapmak için hiçbir daha çok renk çözünürlüğünü ekler. NStartScan ve nNumScans parametreleri (sunu Manager uyumluluğu residue) şerit için kullanılmak üzere tasarlanmıştır. Değilse tüm DIB bir belleğe yüklemek yeterli bellek yok, yalnızca bir kısmını bitlerin işaret edecek biçimde lpBits yapılabilir. Aşağıdaki örneği inceleyin: CreateDIBitmap()Aşağıdaki kod ile normal servis talebi arama CreateDIBitmap() gösterir:SetDIBitsToDevice()SetDIBitsToDevice() doğrudan bir aygıt yüzey bir DIB ayarlamak bir uygulama sağlar. Bu işlev bir holdout erken geliştirme'den olduğundan, arabirimi olabilir gibi parlak değil. StretchDIBits()SetDIBitsToDevice() ' den daha güçlü bir işlevdir. StretchDIBits() tümünü mü, SetDIBitsToDevice() yapar ve nicer bir arabirimi vardır. SetDIBitsToDevice() ölçek olduğundan, meta dosyaları işleme biçiminde sınırlıdır ve nStartScan ve nNumScans parametrelerle şerit en iyi nontrivial olur. Şerit StretchDIBits() izin vermiyor.Aşağıdaki kod StretchDIBits kullanarak (şerit yok) tam bitmap üzerinde SetDIBitsToDevice() işlevleri gerçekleştirir: Baş aşağı ile ilgili DIB kısmi bir ayar yaparken hassas olur. Örneğin, uygulama alt bir DIB üçüncü almak istiyorsa, w h aygıt (x, y) piksel olarak ise, arama aşağıdaki benzer: StretchDIBits()Bu işlev, tüm darling bir DIB bir aygıtı yüzeyine görüntülemek için kullanılır. Bu, özellikle metafiling ve uzatma yeteneğini önemli olduğu bir yazdırma için iyi olur.Geçerli uygulamasında StretchDIBits() kritik bir bir delik StretchDIBits() yazıcı sürücüleri tarafından desteklenir ve görüntü sürücüleri tarafından birçok ' dir. Bu nedenle, sürekli ekranda bir DIB uzatmak için bu işlevi kullanmak (aygıta bağımlı bir bit eşlem almak için <a0></a0>) tarafından yinelenen StretchBlt() çağrıları ardından SetDIBits kullanmaktan belirgin şekilde yavaştır. Bu işlev, gdı'nın uygulama çok basittir. Aygıt sürücüsü arama kendisini işleyebilir, bunu yapar. Aksi takdirde ve 1 ve 1 çağrıdır ve aygıtın SetDIBitsToDevice() destekler, çağrı dönüştürülür sürücü SetDIBitsToDevice() çağrısı için. (Bu yalnızca SRCCOPY ile ROP çalışır.) Bu yöntemlerden hiçbiri mümkünse CreateDIBitmap() bit eşlem aygıta bağımlı bir sürümünü sağlamak için kullanılır ve fiili çalışmayı yapmak için StretchBlt denir. StretchDIBits() parametrelerini temel olarak StretchBlt() (lpBits ve lpInfo tarafından değiştirilen kaynak hDC ile) aynıdır. Bu işlev lpBits DIB bir ilk taranmasını için her zaman işaret eder, böylece nStartScan ve diğer DIB işlevleri, nNumScans parametreler yok. Tam bir bit eşlem stretches dışında için bu işlevi kullanarak, tüm kaynak koordinatları (için DIB ilgili olanlar) bir baş aşağı sisteminde olduğunu unutmayın. Işlev, görüntüyü uygun şekilde çevrilir, ancak kaynak dikdörtgen, alt ve gitmesini kapsamlarını Y = 0 ile tanımlanır. Neyse ki, x koordinatları olarak aynı kuralları kullanın. Yazıcı sürücüleri genellikle (örneğin, PSCRIPT ve HPPCL) bu işlevi destekleyen bir yarı ton algoritması iyi renkli resimler çıktısını almak için kullanın. Tek renkli, çıkış aygıtı olsa bile, iyi çıktı için renk bilgileri yine de yararlıdır, çünkü bu nedenle, Dıb'leri en anlamlı renk çözünürlüğü olası (genellikle 8 bit) Bakımı tercih edilir. Ne yazık ki birçok yazıcı sürücüleri SRCCOPY dışındaki herhangi bir ROP desteklemez. CreateDIBPatternBrush()Bu işlev olarak kullanılan CreatePatternBrush() işlevindeki bir aygıta bağımlı bit eşlem yerine bir DIB belirterek, bir desen fırça oluşturmak bir uygulama sağlar. Bu işlevi kullanılarak oluşturulan BIR fırça benzer başka bir fırça kullanılır. DIB bir aygıta bağımlı bit eşlem SelectObject() zaman kullanmak için aygıtın açık olduğundan. Bu fırça bir standart desen fırça aygıta benzer.PANO İÇİNDEKİ dibsIki temel mekanizmaları Dıb'leri Pano'ya yerleştirmeden CF_DIB veri biçimi kullanıyorsanız veya DIB bir meta dosyası yerleştirme ve CF_METAFILEPICT veri biçimini kullanarak.CF_DIB biçimi bitlerin hemen başlık ve renk tablo sonra izleyin, bir paket DIB kullanır. Bir uygulama, doğru okuma veya bir paketlenmiş DIB oluşturma, bitlerin uygun yerinde olduğundan emin olmak için renk tablosunun boyutunu hesaplamalısınız. Bit işaretçiyi tüm DIB işlevleri, bir başlık ve bir bit, iki işaretçiler olarak DIB beklemeniz için kullanılmadan önce hesaplanması gerekir. (Renk Tablo boyutu hesaplamaları için bkz: renk tablosundaki Açıklama Yukarıdaki kod örneğinde.) Bir DIB bir meta dosyası yerleştirmek için en kolay yolu, StretchDIBits() kullanmaktır: rle BİÇİMLERDıB'ın başlık biCompression</a1> alanında da BI_RLE4 için ayarlandığında (için biBitCount = 4) veya BI_RLE8 (için biBitCount = 8), görüntü, kodlanmış oynatma-uzunluğu yapıldı. Kodlama düzenleri açıklaması "Microsoft Windows yazılım geliştirme seti başvuru birim 2'de," "veri türleri ve yapıları" "BITMAPINFOHEADER" bölümünde bulunabilir bölüm. Çalışma kodlama içine yatay olarak bitişik, aynı piksel olan birden çok sıkıştırma düzeni temel içerir. Örneğin, 17 renk dizinin 10 piksel çalışma uzunluğu 10 ve <a1>Dizin</a1> 17 kodlanmıştır. Son tarama ve delta gider kodlarını da, X ve Y bir mahsup hesabı için sonraki piksel sağlanır sağlanır.Bu tür kodlama genellikle bit eşlem sıkıştırır ve de hareketli türü animasyonlar, yalnızca küçük bir bölümünü görüntünün her çerçevede değiştiği oluşturmak için yararlıdır. Animasyon yetenekleri gerçekten ayarlanan piksel sayısını sınırlamak için delta kodları kullanarak gerçekle?tirilir. Delta taşıma tarafından atlandı sol untouched pikseldir. RLE Dıb'leri, ana fark bir uygulama kolayca bayt bit eşlem boyutunu belirleme kendisi için belirli bir scanline bir bit eşlem ilk tarama kodlama olmadan işaret, sınırlamalardır. BiSizeImage alanın ilk sorun giderme son derece yararlıdır. Kod çözme, kodlama ve genellikle RLE işleme daha yavaştır ve daha karmaşık noncompressed (BI_RGB) biçiminden biçimidir. Bazı uygulamalar--örneğin, Paintbrush--RLE Dıb'leri okumaya reddeder. Tüm Apı'lar bunları kabul olsa da, evrensel olarak desteklenen bir biçim RLE Dıb'leri olacak olmayabilir. Ayrıca, bu biçimler göreli rarity nedeniyle bazı aygıt sürücülerini tam destek kodlama ve kod çözme işlemleri için sınanmıştır değil. Bir RLE DIB oluşturmak için <a0></a0>, istenen kodlama türü için ayarlanan biCompression GetDIBits() çağrılır. Bitlerin depolamak için gereken bellek miktarını kolayca hesaplanan değil. GetDIBits() lpBits null olarak çağrılırsa bitlerin için gereken bellek miktarını biSizeImage döndürülür. Bir sonraki çağrı lpBits doğru ölçekli bir bellek bloğu için işaret ile kodlanmış bir bit eşlem döndürür. Aygıta bağımlı forma bir RLE DIB çevriliyor hiçbir özel işlem gerektirir. SET işlevlerinden herhangi normal olarak uygun biSizeImage ve biCompression değerleri içeren bir üstbilgiyle bitlerin eşleşmesi için kullanılabilir. EKSİKLİKLERİNİN dibsBüyük olasılıkla Dıb'leri en büyük bir sınırlandırılmasıdır aygıta bağımlı bit eşlemler yavaş olmalarını kapsayacaktır. Gerçekte görüntülenebileceği için önce bir aygıta bağımlı forma Dıb'leri çevriliyor. ek yükü kaynaklanan, ek işlem gerektirir. Ideal şartlar altında bir 1 ve 1 StretchDIBits() BitBlt() kadar hızlı olur. Bu hız bir uygulama, bölge, mantıksal bitmap, tam renkli ve tam erişim, fiziksel aygıt sınırlamaları ne olursa olsun, her piksel için etkili bir şekilde çalışmasına izin verir.DIBs kodlama biraz s?k?c? ve değil sezgisel yapmadan Windows göre yukarıdan aşağı olan bir koordinat sistemi ile temel alır. Yinelemelerin sayısı ne kadar fazlaysa, çizgili doğru bir bit eşlem almak için gerekli olan sınırı, her zaman bu quirkiness anımsama yardımcı olmalıdır. 24 Bit Dıb'leri kullanarak tam renkli alabilirsiniz, ancak kod çözme, okumak ve yazmak çok yavaş olur. Bu özellikle, çeviri harfi harfine dakika sürebilir, 8 bit paleti aygıtlarda geçerlidir. Ayrıca, 24 bit Dıb'leri sheer boyutunu bunları genel kullanım için bir bit kaba yapar. windows SÜRÜM 3.0 dib İLE İLGİLİ SORUNLARIMeta dosyası kayıt BITMAPCOREHEADER kullanan StretchDIBits() aramalarının bir UAE neden olur. Tüm üstbilgileri, bu sorunun oluşmaması için BITMAPINFO stiline dönüştürün. Bu geçici çözümü için genel DIB önerilir işleniyor.SetDIBits() benzetimi kodu 64 K tek renkli Dıb'leri'dan büyük bir SetDIBits(), bir SetDIBitsToDevice() veya SetDIBits() desteklemeyen bir sürücüye StretchDIBits() kullanırken çökmeleri ya da hatalı bir yazıcı çıktılarında neden olur. Telif Hakkı 1992 Microsoft Corporation. Tüm Hakları Saklıdır.
Otomatik TercümeÖNEMLİ: Bu makale, bir kişi tarafından çevrilmek yerine, Microsoft makine-çevirisi yazılımı ile çevrilmiştir. Microsoft size hem kişiler tarafından çevrilmiş, hem de makine-çevrisi ile çevrilmiş makaleler sunar. Böylelikle, bilgi bankamızdaki tüm makalelere, kendi dilinizde ulaşmış olursunuz. Bununla birlikte, makine tarafından çevrilmiş makaleler mükemmel değildir. Bir yabancının sizin dilinizde konuşurken yapabileceği hatalar gibi, makale; kelime dağarcığı, söz dizim kuralları veya dil bilgisi açısından yanlışlar içerebilir. Microsoft, içeriğin yanlış çevrimi veya onun müşteri tarafından kullanımından doğan; kusur, hata veya zarardan sorumlu değildir. Microsoft ayrıca makine çevirisi yazılımını sıkça güncellemektedir. Makalenin İngilizcesi aşağıdaki gibidir:81498
(http://support.microsoft.com/kb/81498/en-us/
)
| Diğer Kaynaklar Diğer Destek Siteleri
ToplulukMakale çevirileri
|






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



Üste