Bu makalede, program aracılığıyla bir imleç alfa bit içeren bir simge oluşturmak gereken adımları açıklar. Bu makalenin amacıyla, bu türde işaretçiler ve simgeler için "alpha imleçler korunmalarında" veya "alfa simgeleri korunmalarında." olarak adlandırılır Alfa imleçler korunmalarında ve alfa karıştırılmış simgeleri, yalnızca Microsoft Windows XP'de desteklenir.
Alfa karıştırılmış imleç ya da simge oluşturmak için <a0></a0>, alfa değerleri içeren bir DIB bölümü oluşturun ve bu DIB bölümüyle CreateIconIndirect işlevini çağırın. Maske bit eşlem ICONINFO yapısında gerekli olmasa da, CreateIconIndirect işlevi maskesi bit eşlem olarak göndermek için boş bir tek renkli bitmap oluşturmanız gerekir. Alfa bitlerin DIB bit eşlem bölüm her piksel için oluşturulan bir simge veya imleç her piksel için görünürlük belirler.
Alfa karıştırılmış imleç ya da simge oluşturmak için şu adımları izleyin:
Bir BITMAPV5HEADER yapısı'nı tamamlamak için bir 32 bit / piksel (BPP) tanımlamak için aşağıdaki adımları gibi kod örneği, DIB alfa korunmalarında.
DIB, tamamlanan BITMAPV5HEADER yapısını temel alan bölüm oluşturmak için CreateDIBSection işlevini çağırın.
DIB bölümünü tamamlamak için alfa karıştırılmış imleç veya simge için istediğiniz bit eşlem ve alfa bilgileri kullanın.
Bir ICONINFO yapısı'nı tamamlayın.
HbmMask alanında boş bir tek renkli bit eşlem koyun ve alfa karıştırılmış DIB bölümü hbmColor alana yerleştirin.
Alfa karıştırılmış bir işaretçi veya simge oluşturmak için CreateIconIndirect işlevini çağırın.
Aşağıdaki Microsoft Visual C++ kodu, bir alfa karıştırılmış imleç oluşturulması gösterilmiştir. ICONINFO yapısını fIcon üyesi DOğRU olarak değiştirerek alfa karıştırılmış simge oluşturmak için aynı kodu kullanabilirsiniz:
HCURSOR CreateAlphaCursor(void)
{
HDC hMemDC;
DWORD dwWidth, dwHeight;
BITMAPV5HEADER bi;
HBITMAP hBitmap, hOldBitmap;
void *lpBits;
DWORD x,y;
HCURSOR hAlphaCursor = NULL;
dwWidth = 32; // width of cursor
dwHeight = 32; // height of cursor
ZeroMemory(&bi,sizeof(BITMAPV5HEADER));
bi.bV5Size = sizeof(BITMAPV5HEADER);
bi.bV5Width = dwWidth;
bi.bV5Height = dwHeight;
bi.bV5Planes = 1;
bi.bV5BitCount = 32;
bi.bV5Compression = BI_BITFIELDS;
// The following mask specification specifies a supported 32 BPP
// alpha format for Windows XP.
bi.bV5RedMask = 0x00FF0000;
bi.bV5GreenMask = 0x0000FF00;
bi.bV5BlueMask = 0x000000FF;
bi.bV5AlphaMask = 0xFF000000;
HDC hdc;
hdc = GetDC(NULL);
// Create the DIB section with an alpha channel.
hBitmap = CreateDIBSection(hdc, (BITMAPINFO *)&bi, DIB_RGB_COLORS,
(void **)&lpBits, NULL, (DWORD)0);
hMemDC = CreateCompatibleDC(hdc);
ReleaseDC(NULL,hdc);
// Draw something on the DIB section.
hOldBitmap = (HBITMAP)SelectObject(hMemDC, hBitmap);
PatBlt(hMemDC,0,0,dwWidth,dwHeight,WHITENESS);
SetTextColor(hMemDC,RGB(0,0,0));
SetBkMode(hMemDC,TRANSPARENT);
TextOut(hMemDC,0,9,"rgba",4);
SelectObject(hMemDC, hOldBitmap);
DeleteDC(hMemDC);
// Create an empty mask bitmap.
HBITMAP hMonoBitmap = CreateBitmap(dwWidth,dwHeight,1,1,NULL);
// Set the alpha values for each pixel in the cursor so that
// the complete cursor is semi-transparent.
DWORD *lpdwPixel;
lpdwPixel = (DWORD *)lpBits;
for (x=0;x<dwWidth;x++)
for (y=0;y<dwHeight;y++)
{
// Clear the alpha bits
*lpdwPixel &= 0x00FFFFFF;
// Set the alpha bits to 0x9F (semi-transparent)
*lpdwPixel |= 0x9F000000;
lpdwPixel++;
}
ICONINFO ii;
ii.fIcon = FALSE; // Change fIcon to TRUE to create an alpha icon
ii.xHotspot = 0;
ii.yHotspot = 0;
ii.hbmMask = hMonoBitmap;
ii.hbmColor = hBitmap;
// Create the alpha cursor with the alpha DIB section.
hAlphaCursor = CreateIconIndirect(&ii);
DeleteObject(hBitmap);
DeleteObject(hMonoBitmap);
return hAlphaCursor;
}
Bu makaledeki bilginin uygulandığı durum:
Microsoft Platform Software Development Kit - Ocak 2000 Sürümü, Ne zaman ne ile kullanilir:
the operating system: Microsoft Windows XP
Microsoft Windows XP Professional Edition
the operating system: Microsoft Windows XP 64-Bit Edition
Ö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:318876
(http://support.microsoft.com/kb/318876/en-us/
)
Bu makaleyi kullanmak için ne kadar kişisel çaba harcadınız?
Çok az
Az
Orta
Fazla
Çok fazla
Bu bilgiyi geliştirmemiz için nedenleri ve bu konuda neler yapabileceğimizi paylaşın
Teşekkürler! Görüşleriniz, destek içeriğimizi geliştirmemize yardımcı olmak için kullanılmaktadır. Diğer yardım seçenekleri için, lütfen Yardım ve Destek Giriş Sayfasını ziyaret edin.