Aracılığıyla paylaş


Bellek Cihazı Bağlamları

Uygulamaların çıkışı gerçek bir cihaza göndermek yerine belleğe yerleştirmesini sağlamak için, bellek cihazı bağlamıolarak adlandırılan bit eşlem işlemleri için özel bir cihaz bağlamı kullanın. Bellek DC'si, sistemin belleğin bir kısmını sanal cihaz olarak ele alamasına olanak tanır. Bir uygulamanın normal bir çizim yüzeyinde oluşturulan bit eşlemleri için renk verilerini depolamak için geçici olarak kullanabileceği bellekteki bit dizisidir. Bit eşlem cihazla uyumlu olduğundan bellek DC'sine bazen uyumlu cihaz bağlamıde denir.

Bellek DC'sinde belirli bir cihaz için bit eşlem görüntüleri depolar. Uygulama, CreateCompatibleDC işlevini çağırarak bellek DC'sini oluşturabilir.

Bellek DC'sindeki özgün bit eşlem yalnızca bir yer tutucudur. Boyutları bir pikseldir. Bir uygulamanın çizime başlayabilmesi için önce SelectObject işlevini çağırarak DC'ye uygun genişlik ve yüksekliğe sahip bir bit eşlem seçmesi gerekir. Uygun boyutların bit eşlemini oluşturmak için CreateBitmap, CreateBitmapIndirectkullanın veya CreateCompatibleBitmapişlevini. Bit eşlem bellek DC'sine seçildikten sonra sistem, tek bit dizisini belirtilen piksel dikdörtgeninin renk bilgilerini depolayabilecek kadar büyük bir diziyle değiştirir.

Uygulama CreateCompatibleDC tarafından döndürülen tanıtıcıyı çizim işlevlerinden birine geçirdiğinde, istenen çıkış cihazın çizim yüzeyinde görünmez. Bunun yerine, sistem sonuçta elde edilen çizgi, eğri, metin veya bölge için renk bilgilerini bit dizisinde depolar. Uygulama, BitBlt işlevini çağırarak, bellek DC'sini kaynak cihaz bağlamı olarak ve bir pencere veya ekran DC'sini hedef cihaz bağlamı olarak tanımlayarak bellekte depolanan görüntüyü bir çizim yüzeyine geri kopyalayabilir.

Palet cihazında DIB veya DIB'den oluşturulan bir DDB görüntülerken, mantıksal paleti sistem paletinin düzeniyle eşleşecek şekilde düzenleyerek görüntünün çizildiği hızı geliştirebilirsiniz. Bunu yapmak için GetDeviceCaps NUMRESERVED değeriyle çağırarak sistemdeki ayrılmış renk sayısını alın. Ardından GetSystemPaletteEntries çağırın ve mantıksal paletin ilk ve son NUMRESERVED/2 girdilerini ilgili sistem renkleriyle doldurun. Örneğin, NUMRESERVED 20 ise, mantıksal paletin ilk ve son 10 girdisini sistem renkleriyle doldurursunuz. Ardından mantıksal paletin kalan 256 NUMRESERVED rengini (bizim örneğimizde kalan 236 rengi) DIB'deki renklerle doldurun ve bu renklerin her birinde PC_NOCOLLAPSE bayrağını ayarlayın.

Renk ve paletler hakkında daha fazla bilgi için bkz. renkler . Bit eşlemler ve bit eşlem işlemleri hakkında daha fazla bilgi için bkz. Bit Eşlemler.