Dela via


CImage-klass

CImage ger förbättrat stöd för bitmappar, inklusive möjligheten att läsa in och spara bilder i JPEG-, GIF-, BMP- och PNG-format (Portable Network Graphics).

Important

Den här klassen och dess medlemmar kan inte användas i program som körs i Windows Runtime.

Syntax

class CImage

Members

Public Constructors

Name Description
CImage::CImage The constructor.

Public Methods

Name Description
CImage::AlphaBlend Visar bitmappar som har transparenta eller halvtransparentera bildpunkter.
CImage::Attach Bifogar ett HBITMAP objekt CImage . Kan användas med bitmappar som inte är DIB-avsnitt eller DIB-avsnittsbitmappar.
CImage::BitBlt Kopierar en bitmapp från källenhetskontexten till den aktuella enhetskontexten.
CImage::Create Skapar en DIB-avsnittsbitmapp och kopplar den till det tidigare konstruerade CImage objektet.
CImage::CreateEx Skapar en DIB-avsnittsbitmapp (med ytterligare parametrar) och kopplar den till det tidigare konstruerade CImage objektet.
CImage::Destroy Kopplar bort bitmappen CImage från objektet och förstör bitmappen.
CImage::Detach Kopplar från bitmappen från ett CImage objekt.
CImage::Draw Kopierar en bitmapp från en källrektangel till en målrektangel. Draw sträcker ut eller komprimerar bitmappen så att den passar målrektangelns dimensioner, om det behövs, och hanterar alfablandning och transparenta färger.
CImage::GetBits Hämtar en pekare till bitmappens faktiska pixelvärden.
CImage::GetBPP Hämtar bitarna per pixel.
CImage::GetColorTable Hämtar röda, gröna, blå (RGB) färgvärden från ett antal poster i färgtabellen.
CImage::GetDC Hämtar enhetskontexten som den aktuella bitmappen är vald i.
CImage::GetExporterFilterString Hittar tillgängliga bildformat och deras beskrivningar.
CImage::GetHeight Hämtar höjden på den aktuella bilden i bildpunkter.
CImage::GetImporterFilterString Hittar tillgängliga bildformat och deras beskrivningar.
CImage::GetMaxColorTableEntries Hämtar det maximala antalet poster i färgtabellen.
CImage::GetPitch Hämtar den aktuella bildens tonhöjd i byte.
CImage::GetPixel Hämtar färgen på pixeln som anges av x och y.
CImage::GetPixelAddress Hämtar adressen till en viss pixel.
CImage::GetTransparentColor Hämtar positionen för den transparenta färgen i färgtabellen.
CImage::GetWidth Hämtar bredden på den aktuella bilden i bildpunkter.
CImage::IsDIBSection Avgör om den anslutna bitmappen är ett DIB-avsnitt.
CImage::IsIndexed Anger att en bitmapps färger mappas till en indexerad palett.
CImage::IsNull Anger om en källbitmapp för närvarande har lästs in.
CImage::IsTransparencySupported Anger om programmet stöder transparenta bitmappar.
CImage::Load Läser in en bild från den angivna filen.
CImage::LoadFromResource Läser in en bild från den angivna resursen.
CImage::MaskBlt Kombinerar färgdata för käll- och målbitmapparna med den angivna mask- och rasteråtgärden.
CImage::PlgBlt Utför en bitblocksöverföring från en rektangel i en källenhetskontext till ett parallellogram i en målenhetskontext.
CImage::ReleaseDC Släpper enhetskontexten som hämtades med CImage::GetDC.
CImage::ReleaseGDIPlus Frigör resurser som används av GDI+. Måste anropas för att frigöra resurser som skapats av ett globalt CImage objekt.
CImage::Save Sparar en bild som den angivna typen. Save kan inte ange bildalternativ.
CImage::SetColorTable Anger röda, gröna, blå RGB)-färgvärden i ett antal poster i färgtabellen i DIB-avsnittet.
CImage::SetPixel Anger pixeln vid de angivna koordinaterna till den angivna färgen.
CImage::SetPixelIndexed Anger pixeln vid de angivna koordinaterna till färgen vid det angivna indexet för paletten.
CImage::SetPixelRGB Anger pixeln vid de angivna koordinaterna till det angivna värdet röd, grön, blå (RGB).
CImage::SetTransparentColor Anger indexet för färgen som ska behandlas som transparent. Endast en färg i en palett kan vara transparent.
CImage::StretchBlt Kopierar en bitmapp från en källrektangel till en målrektangel, sträcker ut eller komprimerar bitmappen så att den passar målrektangelns dimensioner om det behövs.
CImage::TransparentBlt Kopierar en bitmapp med transparent färg från källenhetskontexten till den aktuella enhetskontexten.

Public Operators

Name Description
CImage::operator HBITMAP Returnerar Windows-handtaget som är kopplat till CImage objektet.

Remarks

CImage tar bitmappar som antingen är enhetsoberoende bitmappsavsnitt (DIB) eller inte. Du kan dock använda Create eller CImage::Load med endast DIB-avsnitt. Du kan koppla en bitmapp för icke-DIB-avsnitt till ett CImage objekt med hjälp av Attach, men sedan kan du inte använda följande CImage metoder, som endast stöder DIB-avsnittsbitmappar:

Om du vill ta reda på om en bifogad bitmapp är ett DIB-avsnitt anropar du IsDibSection.

Note

I Visual Studio .NET 2003 behåller den här klassen antalet CImage skapade objekt. När antalet går till 0 anropas funktionen GdiplusShutdown automatiskt för att frigöra resurser som används av GDI+. Detta säkerställer att alla CImage objekt som skapas direkt eller indirekt av DLL:er alltid förstörs korrekt och som GdiplusShutdown inte anropas från DllMain.

Note

Användning av globala CImage objekt i en DLL rekommenderas inte. Om du behöver använda ett globalt CImage objekt i en DLL anropar CImage::ReleaseGDIPlus du för att uttryckligen frigöra resurser som används av GDI+.

CImage kan inte väljas till en ny CDC. CImage skapar sin egen HDC för avbildningen. Eftersom en HBITMAP endast kan väljas till en HDC i taget kan inte den HBITMAP associerade med CImage markeras till en annan HDC. Om du behöver en CDChämtar du från CImage och ger den till CDC::FromHandleHDC .

Examples

// Get a CDC for the image
CDC* pDC = CDC::FromHandle(m_myImage.GetDC());

// Use pDC here
pDC->Rectangle(0, 40, 100, 50);
m_myImage.ReleaseDC();

När du använder CImage i ett MFC-projekt bör du notera vilka medlemsfunktioner i projektet som förväntar sig en pekare till ett CBitmap objekt. Om du vill använda CImage med en sådan funktion, till exempel CMenu::AppendMenu, använder CBitmap::FromHandle, skickar du den till CImageHBITMAPoch använder den returnerade CBitmap*.

void CMyDlg::OnRButtonDown(UINT nFlags, CPoint point)
{
    UNREFERENCED_PARAMETER(nFlags);

    CBitmap* pBitmap = CBitmap::FromHandle(m_myImage);
    m_pmenuPop->AppendMenu(0, ID_BMPCOMMAND, pBitmap);
    ClientToScreen(&point);
    m_pmenuPop->TrackPopupMenu(TPM_RIGHTBUTTON | TPM_LEFTALIGN, point.x,
    point.y, this);
}

Via CImagehar du åtkomst till de faktiska bitarna i ett DIB-avsnitt. Du kan använda ett CImage objekt var som helst där du tidigare använde ett Win32 HBITMAP - eller DIB-avsnitt.

Du kan använda CImage från antingen MFC eller ATL.

Note

När du skapar ett projekt med måste CImagedu definiera CString innan du inkluderar atlimage.h. Om ditt projekt använder ATL utan MFC ska du inkludera atlstr.h innan du tar med atlimage.h. Om ditt projekt använder MFC (eller om det är ett ATL-projekt med MFC-stöd) ska du inkludera afxstr.h innan du inkluderar atlimage.h.

På samma sätt måste du inkludera atlimage.h innan du inkluderar atlimpl.cpp. För att göra detta enkelt, inkludera atlimage.h i din pch.h (stdafx.h i Visual Studio 2017 och tidigare).

Requirements

Header:atlimage.h

CImage::AlphaBlend

Visar bitmappar som har transparenta eller halvtransparentera bildpunkter.

BOOL AlphaBlend(
    HDC hDestDC,
    int xDest,
    int yDest,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER) const throw();

BOOL AlphaBlend(
    HDC hDestDC,
    const POINT& pointDest,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER) const throw();

BOOL AlphaBlend(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER);

BOOL AlphaBlend(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc,
    BYTE bSrcAlpha = 0xff,
    BYTE bBlendOp = AC_SRC_OVER);

Parameters

hDestDC
Hantera målenhetskontexten.

xDest
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

yDest
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

bSrcAlpha
Ett alfatransparensvärde som ska användas på hela källbitmappen. Standardvärdet 0xff (255) förutsätter att bilden är ogenomskinlig och att du endast vill använda alfavärden per bildpunkt.

bBlendOp
Funktionen alpha-blending för käll- och målbitmappar, ett globalt alfavärde som ska tillämpas på hela källbitmappen och formatera information för källbitmappen. Funktionerna för käll- och målblandning är för närvarande begränsade till AC_SRC_OVER.

pointDest
En referens till en POINT struktur som identifierar det övre vänstra hörnet i målrektangeln i logiska enheter.

nDestWidth
Målrektangelns bredd i logiska enheter.

nDestHeight
Målrektangelns höjd, i logiska enheter.

xSrc
Den logiska x-koordinaten för det övre vänstra hörnet i källrektangeln.

ySrc
Den logiska y-koordinaten i det övre vänstra hörnet i källrektangeln.

nSrcWidth
Bredden i logiska enheter för källrektangeln.

nSrcHeight
Källrektangelns höjd, i logiska enheter.

rectDest
En referens till en RECT struktur som identifierar målet.

rectSrc
En referens till en RECT struktur som identifierar källan.

Return Value

Nonzero om det lyckas; annars 0.

Remarks

Alfablandade bitmappar stöder färgblandning per bildpunkt.

När bBlendOp är inställt på standardvärdet AC_SRC_OVERplaceras källbitmappen över målbitmappen baserat på alfavärdena för källpixlarna.

CImage::Attach

Ansluter hBitmap till ett CImage objekt.

void Attach(HBITMAP hBitmap, DIBOrientation eOrientation = DIBOR_DEFAULT) throw();

Parameters

hBitmap
Ett handtag till en HBITMAP.

eOrientation
Anger orienteringen för bitmappen. Kan vara något av följande:

  • DIBOR_DEFAULT Orienteringen för bitmappen bestäms av operativsystemet.

  • DIBOR_BOTTOMUP Linjerna i bitmappen är i omvänd ordning. Detta gör CImage::GetBits att en pekare returneras nära slutet av bitmappsbufferten och CImage::GetPitch returnerar ett negativt tal.

  • DIBOR_TOPDOWN Linjerna i bitmappen är i ordning uppifrån och ned. Detta gör CImage::GetBits att en pekare returneras till den första byte av bitmappsbufferten och CImage::GetPitch returnerar ett positivt tal.

Remarks

Bitmappen kan vara antingen en bitmapp som inte är DIB-avsnitt eller en DIB-avsnittsbitmapp. Se IsDIBSection en lista över metoder som du bara kan använda med DIB-avsnittsbitmappar.

CImage::BitBlt

Kopierar en bitmapp från källenhetskontexten till den aktuella enhetskontexten.

BOOL BitBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    DWORD dwROP = SRCCOPY) const throw();

BOOL BitBlt(
    HDC hDestDC,
    const POINT& pointDest,
    DWORD dwROP = SRCCOPY) const throw();

BOOL BitBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    DWORD dwROP = SRCCOPY) const throw();

BOOL BitBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const POINT& pointSrc,
    DWORD dwROP = SRCCOPY) const throw();

Parameters

hDestDC
HDCMålet .

xDest
Den logiska x-koordinaten för det övre vänstra hörnet i målrektangeln.

yDest
Den logiska y-koordinaten i det övre vänstra hörnet i målrektangeln.

dwROP
Rasteråtgärden som ska utföras. Raster-operation-koder definierar exakt hur du kombinerar bitarna för källan, målet och mönstret (som definieras av den markerade penseln) för att bilda målet. I BitBlt Windows SDK finns en lista över andra raster-åtgärdskoder och deras beskrivningar.

pointDest
En POINT struktur som anger det övre vänstra hörnet i målrektangeln.

nDestWidth
Målrektangelns bredd i logiska enheter.

nDestHeight
Målrektangelns höjd, i logiska enheter.

xSrc
Den logiska x-koordinaten för det övre vänstra hörnet i källrektangeln.

ySrc
Den logiska y-koordinaten i det övre vänstra hörnet i källrektangeln.

rectDest
En RECT struktur som anger målrektangeln.

pointSrc
En POINT struktur som anger det övre vänstra hörnet i källrektangeln.

Return Value

Nonzero om det lyckas; annars noll.

Remarks

Mer information BitBlt finns i Windows SDK.

CImage::CImage

Konstruerar ett CImage objekt.

CImage() throw();

Remarks

När du har konstruerat objektet anropar Createdu , Load, LoadFromResourceeller Attach för att koppla en bitmapp till objektet.

Not I Visual Studio behåller den här klassen antalet CImage skapade objekt. När antalet går till 0 anropas funktionen GdiplusShutdown automatiskt för att frigöra resurser som används av GDI+. Detta säkerställer att alla CImage objekt som skapas direkt eller indirekt av DLL:er alltid förstörs korrekt och som GdiplusShutdown inte anropas från DllMain.

Användning av globala CImage objekt i en DLL rekommenderas inte. Om du behöver använda ett globalt CImage objekt i en DLL anropar CImage::ReleaseGDIPlus du för att uttryckligen frigöra resurser som används av GDI+.

CImage::Create

Skapar en CImage bitmapp och kopplar den till det tidigare konstruerade CImage objektet.

BOOL Create(
    int nWidth,
    int nHeight,
    int nBPP,
    DWORD dwFlags = 0) throw();

Parameters

nWidth
Bitmappens CImage bredd i bildpunkter.

nHeight
Bitmappens CImage höjd i bildpunkter. Om nHeight är positivt är bitmappen en dib nedifrån och upp och dess ursprung är det nedre vänstra hörnet. Om nHeight är negativt är bitmappen en dib uppifrån och ned och dess ursprung är det övre vänstra hörnet.

nBPP
Antalet bitar per pixel i bitmappen. Vanligtvis 4, 8, 16, 24 eller 32. Kan vara 1 för monokroma bitmappar eller masker.

dwFlags
Anger om bitmappsobjektet har en alfakanal. Kan vara en kombination av noll eller fler av följande värden:

  • createAlphaChannel Kan endast användas om nBPP är 32 och eCompression är BI_RGB. Om den skapade bilden anges har den ett alfavärde (transparens) för varje bildpunkt som lagras i den fjärde byte för varje pixel (används inte i en 32-bitars bild utan alfa). Den här alfakanalen används automatiskt när du anropar CImage::AlphaBlend.

Note

I anrop till CImage::Drawblandas bilder med en alfakanal automatiskt till målet.

Return Value

Nonzero om det lyckas; annars 0.

CImage::CreateEx

Skapar en CImage bitmapp och kopplar den till det tidigare konstruerade CImage objektet.

BOOL CreateEx(
    int nWidth,
    int nHeight,
    int nBPP,
    DWORD eCompression,
    const DWORD* pdwBitmasks = NULL,
    DWORD dwFlags = 0) throw();

Parameters

nWidth
Bitmappens CImage bredd i bildpunkter.

nHeight
Bitmappens CImage höjd i bildpunkter. Om nHeight är positivt är bitmappen en dib nedifrån och upp och dess ursprung är det nedre vänstra hörnet. Om nHeight är negativt är bitmappen en dib uppifrån och ned och dess ursprung är det övre vänstra hörnet.

nBPP
Antalet bitar per pixel i bitmappen. Vanligtvis 4, 8, 16, 24 eller 32. Kan vara 1 för monokroma bitmappar eller masker.

eCompression
Anger typen av komprimering för en komprimerad nedersta bitmapp (det går inte att komprimera de översta DIB:erna). Kan vara något av följande värden:

  • BI_RGB Formatet är okomprimerat. Att ange det här värdet när anropet CImage::CreateEx motsvarar anropet CImage::Create.

  • BI_BITFIELDS Formatet är okomprimerat och färgtabellen består av tre DWORD färgmasker som anger de röda, gröna respektive blå komponenterna för varje pixel. Detta är giltigt när det används med 16- och 32-bpp-bitmappar.

pdwBitfields
Används endast om eCompression är inställt på BI_BITFIELDS, annars måste det vara NULL. En pekare till en matris med tre DWORD bitmasker som anger vilka bitar av varje pixel som används för de röda, gröna respektive blå komponenterna i färgen. Information om begränsningar för bitfälten BITMAPINFOHEADER finns i Windows SDK.

dwFlags
Anger om bitmappsobjektet har en alfakanal. Kan vara en kombination av noll eller fler av följande värden:

  • createAlphaChannel Kan endast användas om nBPP är 32 och eCompression är BI_RGB. Om den skapade bilden anges har den ett alfavärde (transparens) för varje bildpunkt som lagras i den fjärde byte för varje pixel (används inte i en 32-bitars bild utan alfa). Den här alfakanalen används automatiskt när du anropar CImage::AlphaBlend.

    Note

    I anrop till CImage::Drawblandas bilder med en alfakanal automatiskt till målet.

Return Value

TRUE om det lyckas. Annars FALSE.

Example

I följande exempel skapas en bitmapp på 100 x 100 bildpunkter med 16 bitar för att koda varje pixel. I en given 16-bitars pixel kodar bitar 0-3 den röda komponenten, bitar 4-7 kodar grönt och bitar 8-11 kodar blått. De återstående 4 bitarna är oanvända.

DWORD adwBitmasks[3] = { 0x0000000f, 0x000000f0, 0x00000f00 };
m_myImage.CreateEx(100, 100, 16, BI_BITFIELDS, adwBitmasks, 0);

CImage::Destroy

Kopplar bort bitmappen CImage från objektet och förstör bitmappen.

void Destroy() throw();

CImage::Detach

Kopplar från en bitmapp från ett CImage objekt.

HBITMAP Detach() throw();

Return Value

Ett handtag till bitmappen som kopplas från eller NULL om ingen bitmapp är kopplad.

CImage::Draw

Kopierar en bitmapp från källenhetskontexten till den aktuella enhetskontexten.

BOOL Draw(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight) const throw();

BOOL Draw(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc) const throw();

BOOL Draw(
    HDC hDestDC,
    int xDest,
    int yDest) const throw();

BOOL Draw(
    HDC hDestDC,
    const POINT& pointDest) const throw();

BOOL Draw(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight) const throw();

BOOL Draw(
    HDC hDestDC,
    const RECT& rectDest) const throw();

Parameters

hDestDC
En referens till målenhetskontexten.

xDest
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

yDest
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

nDestWidth
Målrektangelns bredd i logiska enheter.

nDestHeight
Målrektangelns höjd, i logiska enheter.

xSrc
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

ySrc
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

nSrcWidth
Bredden i logiska enheter för källrektangeln.

nSrcHeight
Källrektangelns höjd, i logiska enheter.

rectDest
En referens till en RECT struktur som identifierar målet.

rectSrc
En referens till en RECT struktur som identifierar källan.

pointDest
En referens till en POINT struktur som identifierar det övre vänstra hörnet i målrektangeln i logiska enheter.

Return Value

Nonzero om det lyckas; annars 0.

Remarks

Draw utför samma åtgärd som StretchBlt, såvida inte bilden innehåller en transparent färg eller alfakanal. I så fall Draw utför du samma åtgärd som antingen TransparentBlt eller AlphaBlend efter behov.

För versioner av Draw som inte anger en källrektangel är hela källbilden standard. För den version av Draw som inte anger en storlek för målrektangeln är storleken på källbilden standard och ingen utsträckning eller krympning sker.

CImage::GetBits

Hämtar en pekare till de faktiska bitvärdena för en viss pixel i en bitmapp.

void* GetBits() throw();

Return Value

En pekare till bitmappsbufferten. Om bitmappen är en dib nedifrån och upp pekar pekaren nära slutet av bufferten. Om bitmappen är en uppifrån och ned-DIB pekar pekaren på buffertens första byte.

Remarks

Med hjälp av den här pekaren, tillsammans med värdet som returneras av GetPitch, kan du hitta och ändra enskilda bildpunkter i en bild.

Note

Den här metoden stöder endast DIB-avsnittsbitmappar. Därför kommer du åt bildpunkterna i ett CImage objekt på samma sätt som du skulle använda bildpunkterna i ett DIB-avsnitt. Den returnerade pekaren pekar mot pixeln på platsen (0, 0).

CImage::GetBPP

Hämtar bit-per-pixel-värdet.

int GetBPP() const throw();

Return Value

Antalet bitar per pixel.

Remarks

Det här värdet avgör antalet bitar som definierar varje pixel och det maximala antalet färger i bitmappen.

Bitarna per pixel är vanligtvis 1, 4, 8, 16, 24 eller 32. biBitCount Mer information om det här värdet finns i medlemmen BITMAPINFOHEADER i i Windows SDK.

CImage::GetColorTable

Hämtar röda, gröna, blå (RGB) färgvärden från ett antal poster i paletten i DIB-avsnittet.

void GetColorTable(
    UINT iFirstColor,
    UINT nColors,
    RGBQUAD* prgbColors) const throw();

Parameters

iFirstColor
Färgtabellindexet för den första posten som ska hämtas.

nColors
Antalet färgtabellposter som ska hämtas.

prgbColors
En pekare till matrisen med RGBQUAD strukturer för att hämta färgtabellposterna.

CImage::GetDC

Hämtar enhetskontexten som för närvarande har valt avbildningen i den.

HDC GetDC() const throw();

Return Value

Ett handtag till en enhetskontext.

Remarks

För varje anrop till GetDCmåste du ha ett efterföljande anrop till ReleaseDC.

CImage::GetExporterFilterString

Söker efter tillgängliga bildformat för att spara bilder.

static HRESULT GetExporterFilterString(
    CSimpleString& strExporters,
    CSimpleArray<GUID>& aguidFileTypes,
    LPCTSTR pszAllFilesDescription = NULL,
    DWORD dwExclude = excludeDefaultSave,
    TCHAR chSeparator = _T('|'));

Parameters

strExporters
En referens till ett CSimpleString objekt. Mer information finns i Kommentarer .

aguidFileTypes
En matris med GUID:er med varje element som motsvarar en av filtyperna i strängen. I exemplet nedan pszAllFilesDescriptionaguidFileTypes[0] är GUID_NULL och de återstående matrisvärdena är de bildfilformat som stöds av det aktuella operativsystemet.

Note

En fullständig lista över konstanter finns i Bildfilformatkonstanter i Windows SDK.

pszAllFilesDescription
Om den här parametern inte NULLär har filtersträngen ytterligare ett filter i början av listan. Det här filtret har det aktuella värdet pszAllFilesDescription för beskrivningen och accepterar filer för alla tillägg som stöds av andra exportörer i listan.

For example:

//First filter in the list will be titled "All Image Files", and
//will accept files with any extension supported by any exporter.
CImage::GetExporterFilterString(
    strExporters, aguidFileTypes,
_T("All Image Files"));

dwExclude
Uppsättning bitflaggor som anger vilka filtyper som ska undantas från listan. Tillåtna flaggor är:

  • excludeGIF = 0x01 Exkluderar GIF-filer.

  • excludeBMP = 0x02 exkluderar BMP-filer (Windows Bitmap).

  • excludeEMF = 0x04 exkluderar EMF-filer (utökad metafil).

  • excludeWMF = 0x08 Exkluderar WMF-filer (Windows Metafile).

  • excludeJPEG = 0x10 Exkluderar JPEG-filer.

  • excludePNG = 0x20 Exkluderar PNG-filer.

  • excludeTIFF = 0x40 Exkluderar TIFF-filer.

  • excludeIcon = 0x80 exkluderar ICO-filer (Windows Icon).

  • excludeOther = 0x80000000 Exkluderar alla andra filtyper som inte anges ovan.

  • excludeDefaultLoad = 0 För inläsning ingår alla filtyper som standard

  • excludeDefaultSave = excludeIcon | excludeEMF | excludeWMF För att spara undantas dessa filer som standard eftersom de vanligtvis har särskilda krav.

chSeparator
Avgränsaren som används mellan bildformaten. Mer information finns i Kommentarer .

Return Value

En standard HRESULT.

Remarks

Du kan skicka den resulterande formatsträngen till ditt MFC-objekt CFileDialog för att exponera filnamnstilläggen för tillgängliga bildformat i dialogrutan Spara som.

Parametern strExporter har formatet:

file description 0|*.ext0|file description 1|*.ext1|...file description N|*.extN||

där | är det avgränsartecken som anges av chSeparator. For example:

"Bitmap format|*.bmp|JPEG format|*.jpg|GIF format|*.gif|PNG format|*.png||"

Använd standardavgränsaren | om du skickar strängen till ett MFC-objekt CFileDialog . Använd nullavgränsaren '\0' om du skickar strängen till en gemensam dialogruta för filspara.

CImage::GetHeight

Hämtar höjden, i bildpunkter, på en bild.

int GetHeight() const throw();

Return Value

Höjden, i bildpunkter, på en bild.

CImage::GetImporterFilterString

Söker efter tillgängliga bildformat för inläsning av bilder.

static HRESULT GetImporterFilterString(
    CSimpleString& strImporters,
    CSimpleArray<GUID>& aguidFileTypes,
    LPCTSTR pszAllFilesDescription = NULL,
    DWORD dwExclude = excludeDefaultLoad,
    TCHAR chSeparator = _T('|'));

Parameters

strImporters
En referens till ett CSimpleString objekt. Mer information finns i Kommentarer .

aguidFileTypes
En matris med GUID:er med varje element som motsvarar en av filtyperna i strängen. I exemplet nedan pszAllFilesDescriptionaguidFileTypes[0] är GUID_NULL med de återstående matrisvärdena de bildfilformat som stöds av det aktuella operativsystemet.

Note

En fullständig lista över konstanter finns i Bildfilformatkonstanter i Windows SDK.

pszAllFilesDescription
Om den här parametern inte NULLär har filtersträngen ytterligare ett filter i början av listan. Det här filtret har det aktuella värdet pszAllFilesDescription för beskrivningen och accepterar filer för alla tillägg som stöds av andra exportörer i listan.

For example:

//First filter in the list will be titled "All Image Files", and
//will accept files with any extension supported by any importer.
CImage::GetImporterFilterString(
    strImporters, aguidFileTypes,
_T("All Image Files"));

dwExclude
Uppsättning bitflaggor som anger vilka filtyper som ska undantas från listan. Tillåtna flaggor är:

  • excludeGIF = 0x01 Exkluderar GIF-filer.

  • excludeBMP = 0x02 exkluderar BMP-filer (Windows Bitmap).

  • excludeEMF = 0x04 exkluderar EMF-filer (utökad metafil).

  • excludeWMF = 0x08 Exkluderar WMF-filer (Windows Metafile).

  • excludeJPEG = 0x10 Exkluderar JPEG-filer.

  • excludePNG = 0x20 Exkluderar PNG-filer.

  • excludeTIFF = 0x40 Exkluderar TIFF-filer.

  • excludeIcon = 0x80 exkluderar ICO-filer (Windows Icon).

  • excludeOther = 0x80000000 Exkluderar alla andra filtyper som inte anges ovan.

  • excludeDefaultLoad = 0 För inläsning ingår alla filtyper som standard

  • excludeDefaultSave = excludeIcon | excludeEMF | excludeWMF För att spara undantas dessa filer som standard eftersom de vanligtvis har särskilda krav.

chSeparator
Avgränsaren som används mellan bildformaten. Mer information finns i Kommentarer .

Remarks

Du kan skicka den resulterande formatsträngen till ditt MFC-objekt CFileDialog för att exponera filnamnstilläggen för tillgängliga bildformat i dialogrutan Öppna fil .

Parametern strImporter har formatet:

'filbeskrivning 0|.ext0|filbeskrivning 1|. ext1|... filbeskrivning N|*.extN||

där | är det avgränsartecken som anges av chSeparator. For example:

"Bitmap format|*.bmp|JPEG format|*.jpg|GIF format|*.gif|PNG format|*.png||"

Använd standardavgränsaren | om du skickar strängen till ett MFC-objekt CFileDialog . Använd null-avgränsaren '\0' om du skickar strängen till en gemensam dialogruta för Öppna fil .

CImage::GetMaxColorTableEntries

Hämtar det maximala antalet poster i färgtabellen.

int GetMaxColorTableEntries() const throw();

Return Value

Antalet poster i färgtabellen.

Remarks

Den här metoden stöder endast DIB-avsnittsbitmappar.

CImage::GetPitch

Hämtar en bilds tonhöjd.

int GetPitch() const throw();

Return Value

Bildens tonhöjd. Om returvärdet är negativt är bitmappen en DIB nedifrån och dess ursprung är det nedre vänstra hörnet. Om returvärdet är positivt är bitmappen en uppifrån och ned-DIB och dess ursprung är det övre vänstra hörnet.

Remarks

Tonhöjden är avståndet i byte mellan två minnesadresser som representerar början av en bitmappslinje och början av nästa bitmappslinje. Eftersom tonhöjden mäts i byte hjälper en bilds tonhöjd dig att fastställa pixelformatet. Pitchen kan också innehålla ytterligare minne, reserverat för bitmappen.

Använd GetPitch med GetBits för att hitta enskilda bildpunkter i en bild.

Note

Den här metoden stöder endast DIB-avsnittsbitmappar.

CImage::GetPixel

Hämtar färgen på pixeln på den plats som anges av x och y.

COLORREF GetPixel(int x, int y) const throw();

Parameters

x
X-koordinaten för pixeln.

y
Pixelns y-koordinat.

Return Value

Pixelns röda, gröna, blå (RGB) värde. Om pixeln ligger utanför den aktuella urklippsregionen är CLR_INVALIDreturvärdet .

CImage::GetPixelAddress

Hämtar den exakta adressen för en pixel.

void* GetPixelAddress(int x, int y) throw();

Parameters

x
X-koordinaten för pixeln.

y
Pixelns y-koordinat.

Remarks

Adressen bestäms enligt koordinaterna för en pixel, bitmappens tonhöjd och bitarna per pixel.

För format som har mindre än 8 bitar per pixel returnerar den här metoden adressen till bytet som innehåller pixeln. Om bildformatet till exempel har 4 bitar per pixel GetPixelAddress returnerar adressen till den första pixeln i bytet och du måste beräkna för 2 bildpunkter per byte.

Note

Den här metoden stöder endast DIB-avsnittsbitmappar.

CImage::GetTransparentColor

Hämtar den indexerade platsen för den transparenta färgen i färgpaletten.

LONG GetTransparentColor() const throw();

Return Value

Indexet för den transparenta färgen.

CImage::GetWidth

Hämtar bredden, i bildpunkter, på en bild.

int GetWidth() const throw();

Return Value

Bitmappens bredd i bildpunkter.

CImage::IsDIBSection

Avgör om den anslutna bitmappen är ett DIB-avsnitt.

bool IsDIBSection() const throw();

Return Value

TRUE om den anslutna bitmappen är ett DIB-avsnitt. Annars FALSE.

Remarks

Om bitmappen inte är ett DIB-avsnitt kan du inte använda följande CImage metoder, som endast stöder DIB-avsnittsbitmappar:

CImage::IsIndexed

Avgör om en bitmapps bildpunkter mappas till en färgpalett.

bool IsIndexed() const throw();

Return Value

TRUE om indexeras. annars FALSE.

Remarks

Den här metoden returnerar TRUE endast om bitmappen är 8-bitars (256 färger) eller mindre.

Note

Den här metoden stöder endast DIB-avsnittsbitmappar.

CImage::IsNull

Avgör om en bitmapp för närvarande läses in.

bool IsNull() const throw();

Remarks

Den här metoden returnerar TRUE om en bitmapp för närvarande inte har lästs in, annars FALSE.

CImage::IsTransparencySupported

Anger om programmet stöder transparenta bitmappar.

static BOOL IsTransparencySupported() throw();

Return Value

Nonzero om den aktuella plattformen stöder transparens. Otherwise 0.

Remarks

Om returvärdet inte är noll, och transparens stöds, hanterar ett anrop till AlphaBlend, TransparentBlteller Draw transparenta färger.

CImage::Load

Läser in en bild.

HRESULT Load(LPCTSTR pszFileName) throw();
HRESULT Load(IStream* pStream) throw();

Parameters

pszFileName
En pekare till en sträng som innehåller namnet på bildfilen som ska läsas in.

pStream
En pekare till en ström som innehåller namnet på bildfilen som ska läsas in.

Return Value

En standard HRESULT.

Remarks

Läser in avbildningen som anges av pszFileName eller pStream.

Giltiga bildtyper är BMP, GIF, JPEG, PNG och TIFF.

CImage::LoadFromResource

Läser in en bild från en BITMAP resurs.

void LoadFromResource(
    HINSTANCE hInstance,
    LPCTSTR pszResourceName) throw();

void LoadFromResource(
    HINSTANCE hInstance,
    UINT nIDResource) throw();

Parameters

hInstance
Hantera till en instans av modulen som innehåller avbildningen som ska läsas in.

pszResourceName
En pekare till strängen som innehåller namnet på resursen som innehåller avbildningen som ska läsas in.

nIDResource
ID för resursen som ska läsas in.

Remarks

Resursen måste vara av typen BITMAP.

CImage::MaskBlt

Kombinerar färgdata för käll- och målbitmapparna med den angivna mask- och rasteråtgärden.

BOOL MaskBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    HBITMAP hbmMask,
    int xMask,
    int yMask,
    DWORD dwROP = SRCCOPY) const throw();

BOOL MaskBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const POINT& pointSrc,
    HBITMAP hbmMask,
    const POINT& pointMask,
    DWORD dwROP = SRCCOPY) const throw();

BOOL MaskBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    HBITMAP hbmMask,
    DWORD dwROP = SRCCOPY) const throw();

BOOL MaskBlt(
    HDC hDestDC,
    const POINT& pointDest,
    HBITMAP hbmMask,
    DWORD dwROP = SRCCOPY) const throw();

Parameters

hDestDC
Handtaget till modulen vars körbara fil innehåller resursen.

xDest
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

yDest
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

nDestWidth
Bredden i logiska enheter för målrektangeln och källbitmappen.

nDestHeight
Höjden, i logiska enheter, på målrektangeln och källbitmappen.

xSrc
Den logiska x-koordinaten i det övre vänstra hörnet i källbitmappen.

ySrc
Den logiska y-koordinaten i det övre vänstra hörnet i källbitmappen.

hbmMask
Hantera till den monokroma maskbitmappen i kombination med färgbitmappen i källenhetskontexten.

xMask
Den vågräta pixelförskjutningen för maskbitmappen som anges av parametern hbmMask .

yMask
Den lodräta pixelförskjutningen för maskbitmappen som anges av parametern hbmMask .

dwROP
Anger både förgrunds- och bakgrunds-rasteråtgärdskoder som metoden använder för att styra kombinationen av käll- och måldata. Åtgärdskoden för bakgrunds raster lagras i högordningsbytet för högordningsordet för det här värdet. Förgrunds rasteråtgärdskoden lagras i lågordningsbytet för högordningsordet för det här värdet. lågordningsordet för det här värdet ignoreras och bör vara noll. En diskussion om förgrund och bakgrund i kontexten för den här metoden MaskBlt finns i Windows SDK. En lista över vanliga raster-åtgärdskoder BitBlt finns i Windows SDK.

rectDest
En referens till en RECT struktur som identifierar målet.

pointSrc
En POINT struktur som anger det övre vänstra hörnet i källrektangeln.

pointMask
En POINT struktur som anger det övre vänstra hörnet i maskbitmappen.

pointDest
En referens till en POINT struktur som identifierar det övre vänstra hörnet i målrektangeln i logiska enheter.

Return Value

Nonzero om det lyckas, annars 0.

Remarks

Den här metoden gäller endast för Windows NT, version 4.0 och senare.

CImage::operator HBITMAP

Använd den här operatorn för att hämta det anslutna Windows GDI-handtaget för CImage objektet. Den här operatorn är en gjutningsoperator som stöder direkt användning av ett HBITMAP objekt.

CImage::PlgBlt

Utför en bitblocksöverföring från en rektangel i en källenhetskontext till ett parallellogram i en målenhetskontext.

BOOL PlgBlt(
    HDC hDestDC,
    const POINT* pPoints,
    HBITMAP hbmMask = NULL) const throw();

BOOL PlgBlt(
    HDC hDestDC,
    const POINT* pPoints,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    HBITMAP hbmMask = NULL,
    int xMask = 0,
    int yMask = 0) const throw();

BOOL PlgBlt(
    HDC hDestDC,
    const POINT* pPoints,
    const RECT& rectSrc,
    HBITMAP hbmMask = NULL,
    const POINT& pointMask = CPoint(0, 0)) const throw();

Parameters

hDestDC
En referens till målenhetskontexten.

pPoints
En pekare till en matris med tre punkter i det logiska utrymmet som identifierar tre hörn av målparallellogrammet. Det övre vänstra hörnet i källrektangeln mappas till den första punkten i den här matrisen, det övre högra hörnet till den andra punkten i den här matrisen och det nedre vänstra hörnet till den tredje punkten. Det nedre högra hörnet i källrektangeln mappas till den implicita fjärde punkten i parallellogrammet.

hbmMask
Ett handtag till en valfri monokrom bitmapp som används för att maskera färgerna i källrektangeln.

xSrc
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

ySrc
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

nSrcWidth
Bredden i logiska enheter för källrektangeln.

nSrcHeight
Källrektangelns höjd, i logiska enheter.

xMask
X-koordinaten för det övre vänstra hörnet i den monokroma bitmappen.

yMask
y-koordinaten för det övre vänstra hörnet i den monokroma bitmappen.

rectSrc
En referens till en RECT struktur som anger koordinaterna för källrektangeln.

pointMask
En POINT struktur som anger det övre vänstra hörnet i maskbitmappen.

Return Value

Nonzero om det lyckas, annars 0.

Remarks

Om hbmMask identifierar en giltig monokrom bitmapp PlgBit använder du den här bitmappen för att maskera bitar av färgdata från källrektangeln.

Den här metoden gäller endast för Windows NT, version 4.0 och senare. Mer PlgBlt detaljerad information finns i Windows SDK.

CImage::ReleaseDC

Släpper enhetskontexten.

void ReleaseDC() const throw();

Remarks

Eftersom endast en bitmapp kan väljas i en enhetskontext i taget måste du anropa ReleaseDC för varje anrop till GetDC.

CImage::ReleaseGDIPlus

Frigör resurser som används av GDI+.

void ReleaseGDIPlus() throw();

Remarks

Den här metoden måste anropas till kostnadsfria resurser som allokeras av ett globalt CImage objekt. Se även CImage::CImage.

CImage::Save

Sparar en avbildning till den angivna strömmen eller filen på disken.

HRESULT Save(
    IStream* pStream,
    REFGUID guidFileType) const throw();

HRESULT Save(
    LPCTSTR pszFileName,
    REFGUID guidFileType = GUID_NULL) const throw();

Parameters

pStream
En pekare till ett COM IStream-objekt som innehåller filbildsdata.

pszFileName
En pekare till bildens filnamn.

guidFileType
Filtypen för att spara avbildningen som. Kan vara något av följande:

  • ImageFormatBMP En okomprimerad bitmappsbild.

  • ImageFormatPNG En PNG-komprimerad bild (Portable Network Graphic).

  • ImageFormatJPEG En JPEG-komprimerad bild.

  • ImageFormatGIF En GIF-komprimerad bild.

Note

En fullständig lista över konstanter finns i Bildfilformatkonstanter i Windows SDK.

Return Value

En standard HRESULT.

Remarks

Anropa den här funktionen för att spara bilden med ett angivet namn och en angiven typ. Om parametern guidFileType inte ingår används filnamnets filnamnstillägg för att fastställa bildformatet. Om inget tillägg anges sparas avbildningen i BMP-format.

CImage::SetColorTable

Anger de röda, gröna, blå (RGB) färgvärdena för ett intervall med poster i paletten i DIB-avsnittet.

void SetColorTable(
    UINT iFirstColor,
    UINT nColors,
    const RGBQUAD* prgbColors) throw();

Parameters

iFirstColor
Färgtabellindexet för den första posten som ska anges.

nColors
Antalet färgtabellposter som ska anges.

prgbColors
En pekare till matrisen med RGBQUAD strukturer för att ange färgtabellposterna.

Remarks

Den här metoden stöder endast DIB-avsnittsbitmappar.

CImage::SetPixel

Anger färgen på en pixel på en viss plats i bitmappen.

void SetPixel(int x, int y, COLORREF color) throw();

Parameters

x
Den vågräta platsen för den pixel som ska anges.

y
Den lodräta platsen för den pixel som ska anges.

color
Färgen som du ställer in pixeln på.

Remarks

Den här metoden misslyckas om pixelkoordinaterna ligger utanför den valda urklippsregionen.

CImage::SetPixelIndexed

Anger pixelfärgen till den färg som finns på iIndex i färgpaletten.

void SetPixelIndexed(int x, int y, int iIndex) throw();

Parameters

x
Den vågräta platsen för den pixel som ska anges.

y
Den lodräta platsen för den pixel som ska anges.

iIndex
Indexet för en färg i färgpaletten.

CImage::SetPixelRGB

Anger pixeln på de platser som anges av x och y till färgerna som anges av r, goch b, i en röd, grön, blå (RGB) bild.

void SetPixelRGB(
    int x,
    int y,
    BYTE r,
    BYTE g,
    BYTE b) throw();

Parameters

x
Den vågräta platsen för den pixel som ska anges.

y
Den lodräta platsen för den pixel som ska anges.

r
Den röda färgens intensitet.

g
Den gröna färgens intensitet.

b
Den blå färgens intensitet.

Remarks

De röda, gröna och blå parametrarna representeras var och en av ett tal mellan 0 och 255. Om du ställer in alla tre parametrarna på noll är den kombinerade resulterande färgen svart. Om du anger alla tre parametrarna till 255 är den kombinerade resulterande färgen vit.

CImage::SetTransparentColor

Anger en färg på en angiven indexerad plats som transparent.

LONG SetTransparentColor(LONG iTransparentColor) throw();

Parameters

iTransparentColor
Indexet, i en färgpalett, av den färg som ska anges till transparent. Om -1 är ingen färg inställd på transparent.

Return Value

Indexet för den färg som tidigare angetts som transparent.

CImage::StretchBlt

Kopierar en bitmapp från källenhetskontexten till den aktuella enhetskontexten.

BOOL StretchBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    DWORD dwROP = SRCCOPY) const throw();

BOOL StretchBlt(
    HDC hDestDC,
    const RECT& rectDest,
    DWORD dwROP = SRCCOPY) const throw();

BOOL StretchBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    DWORD dwROP = SRCCOPY) const throw();

BOOL StretchBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc,
    DWORD dwROP = SRCCOPY) const throw();

Parameters

hDestDC
En referens till målenhetskontexten.

xDest
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

yDest
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

nDestWidth
Målrektangelns bredd i logiska enheter.

nDestHeight
Målrektangelns höjd, i logiska enheter.

dwROP
Rasteråtgärden som ska utföras. Raster-operation-koder definierar exakt hur du kombinerar bitarna för källan, målet och mönstret (som definieras av den markerade penseln) för att bilda målet. I BitBlt Windows SDK finns en lista över andra raster-åtgärdskoder och deras beskrivningar.

rectDest
En referens till en RECT struktur som identifierar målet.

xSrc
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

ySrc
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

nSrcWidth
Bredden i logiska enheter för källrektangeln.

nSrcHeight
Källrektangelns höjd, i logiska enheter.

rectSrc
En referens till en RECT struktur som identifierar källan.

Return Value

Nonzero om det lyckas, annars 0.

Remarks

Mer information StretchBlt finns i Windows SDK.

CImage::TransparentBlt

Kopierar en bitmapp från källenhetskontexten till den aktuella enhetskontexten.

BOOL TransparentBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    UINT crTransparent = CLR_INVALID) const throw();

BOOL TransparentBlt(
    HDC hDestDC,
    const RECT& rectDest,
    UINT crTransparent = CLR_INVALID) const throw();

BOOL TransparentBlt(
    HDC hDestDC,
    int xDest,
    int yDest,
    int nDestWidth,
    int nDestHeight,
    int xSrc,
    int ySrc,
    int nSrcWidth,
    int nSrcHeight,
    UINT crTransparent = CLR_INVALID) const throw();

BOOL TransparentBlt(
    HDC hDestDC,
    const RECT& rectDest,
    const RECT& rectSrc,
    UINT crTransparent = CLR_INVALID) const throw();

Parameters

hDestDC
En referens till målenhetskontexten.

xDest
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

yDest
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av målrektangeln.

nDestWidth
Målrektangelns bredd i logiska enheter.

nDestHeight
Målrektangelns höjd, i logiska enheter.

crTransparent
Färgen i källbitmappen som ska behandlas som transparent. Som standard CLR_INVALIDanger , som anger att den färg som för närvarande är inställd som den transparenta färgen på bilden ska användas.

rectDest
En referens till en RECT struktur som identifierar målet.

xSrc
X-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

ySrc
y-koordinaten, i logiska enheter, i det övre vänstra hörnet av källrektangeln.

nSrcWidth
Bredden i logiska enheter för källrektangeln.

nSrcHeight
Källrektangelns höjd, i logiska enheter.

rectSrc
En referens till en RECT struktur som identifierar källan.

Return Value

TRUE om det lyckas, annars FALSE.

Remarks

TransparentBlt stöds för källbitmappar på 4 bitar per pixel och 8 bitar per pixel. Använd CImage::AlphaBlend för att ange bitmappar på 32 bitar per bildpunkt med transparens.

Example

// Performs a transparent blit from the source image to the destination
// image using the images' current transparency settings
BOOL TransparentBlt(CImage* pSrcImage, CImage* pDstImage,
       int xDest, int yDest, int nDestWidth, int nDestHeight)
{
    HDC hDstDC = NULL;
    BOOL bResult;

    if(pSrcImage == NULL || pDstImage == NULL)
    {
        // Invalid parameter
        return FALSE;
    }

    // Obtain a DC to the destination image
    hDstDC = pDstImage->GetDC();
    // Perform the blit
    bResult = pSrcImage->TransparentBlt(hDstDC, xDest, yDest, nDestWidth, nDestHeight);

    // Release the destination DC
    pDstImage->ReleaseDC();

    return bResult;
}

See also

MMXSwarm Prov
SimpleImage Prov
Device-Independent Bitmaps
CreateDIBSection
ATL COM Desktop-komponenter
Device-Independent Bitmaps