Поделиться через


Класс CImage

CImage обеспечивает расширенную поддержку растрового изображения, включая возможность загрузки и сохранения изображений в форматах JPEG, GIF, BMP и переносимой сетевой графики (PNG).

Important

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Syntax

class CImage

Members

Public Constructors

Name Description
CImage::CImage The constructor.

Public Methods

Name Description
CImage::AlphaBlend Отображает растровые изображения с прозрачными или полутранспарентными пикселями.
CImage::Attach Присоединяет объект HBITMAP к объекту CImage . Можно использовать либо с растровыми изображениями разделов, отличными от DIB, либо с растровыми изображениями раздела DIB.
CImage::BitBlt Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.
CImage::Create Создает растровое изображение раздела DIB и присоединяет его к ранее созданному CImage объекту.
CImage::CreateEx Создает растровое изображение раздела DIB (с дополнительными параметрами) и присоединяет его к ранее созданному CImage объекту.
CImage::Destroy Отсоединяет растровое изображение от CImage объекта и уничтожает растровое изображение.
CImage::Detach Отсоединяет растровое CImage изображение от объекта.
CImage::Draw Копирует растровое изображение из исходного прямоугольника в целевой прямоугольник. Draw растягивает или сжимает растровое изображение, чтобы соответствовать измерениям прямоугольника назначения при необходимости, а также обрабатывает альфа-смешение и прозрачные цвета.
CImage::GetBits Извлекает указатель на фактические значения пикселя растрового изображения.
CImage::GetBPP Извлекает биты на пиксель.
CImage::GetColorTable Извлекает значения цвета красного, зеленого, синего цвета (RGB) из диапазона записей в таблице цветов.
CImage::GetDC Извлекает контекст устройства, в котором выбрана текущая растровая карта.
CImage::GetExporterFilterString Находит доступные форматы изображений и их описания.
CImage::GetHeight Извлекает высоту текущего изображения в пикселях.
CImage::GetImporterFilterString Находит доступные форматы изображений и их описания.
CImage::GetMaxColorTableEntries Извлекает максимальное количество записей в таблице цветов.
CImage::GetPitch Извлекает поле текущего изображения в байтах.
CImage::GetPixel Извлекает цвет пикселя, заданного x и y.
CImage::GetPixelAddress Извлекает адрес заданного пикселя.
CImage::GetTransparentColor Извлекает положение прозрачного цвета в таблице цветов.
CImage::GetWidth Извлекает ширину текущего изображения в пикселях.
CImage::IsDIBSection Определяет, является ли присоединенная растровая карта разделом DIB.
CImage::IsIndexed Указывает, что цвета растрового изображения сопоставляются с индексированной палитрой.
CImage::IsNull Указывает, загружается ли в данный момент исходная растровая карта.
CImage::IsTransparencySupported Указывает, поддерживает ли приложение прозрачные растровые изображения.
CImage::Load Загружает изображение из указанного файла.
CImage::LoadFromResource Загружает изображение из указанного ресурса.
CImage::MaskBlt Объединяет данные цвета для исходных и целевых растровых изображений с помощью указанной операции маски и растра.
CImage::PlgBlt Выполняет передачу битового блока из прямоугольника в контекст исходного устройства в параллелограмму в контексте конечного устройства.
CImage::ReleaseDC Освобождает контекст устройства, полученный с CImage::GetDCпомощью .
CImage::ReleaseGDIPlus Освобождает ресурсы, используемые GDI+. Необходимо вызвать к свободным ресурсам, созданным глобальным CImage объектом.
CImage::Save Сохраняет изображение в качестве указанного типа. Save не указать параметры изображения.
CImage::SetColorTable Задает значения цвета красного, зеленого, синего RGB) в диапазоне записей в цветовой таблице раздела DIB.
CImage::SetPixel Задает пиксель в указанных координатах заданным цветом.
CImage::SetPixelIndexed Задает пиксель по указанным координатам цвету по указанному индексу палитры.
CImage::SetPixelRGB Задает пиксель по указанным координатам заданному красному, зеленому, синему (RGB) значению.
CImage::SetTransparentColor Задает индекс цвета, который будет рассматриваться как прозрачный. Только один цвет в палитре может быть прозрачным.
CImage::StretchBlt Копирует растровое изображение из исходного прямоугольника в прямоугольник назначения, растяжение или сжатие растрового изображения, чтобы при необходимости соответствовали измерениям прямоугольника назначения.
CImage::TransparentBlt Копирует растровое изображение с прозрачным цветом из исходного контекста устройства в текущий контекст устройства.

Public Operators

Name Description
CImage::operator HBITMAP Возвращает дескриптор Windows, подключенный к объекту CImage .

Remarks

CImage принимает растровые изображения, которые являются разделами, независимыми от устройства (DIB) или нет; однако можно использовать Create или CImage::Load только с разделами DIB. Вы можете подключить растровое изображение раздела, отличного CImage от DIB, к объекту с помощью Attach, но затем нельзя использовать следующие CImage методы, которые поддерживают только растровые изображения разделов DIB:

Чтобы определить, является ли подключенная растровая карта разделом DIB, вызовите вызов IsDibSection.

Note

В Visual Studio .NET 2003 этот класс сохраняет количество созданных CImage объектов. Всякий раз, когда число переходит к 0, функция GdiplusShutdown автоматически вызывается для выпуска ресурсов, используемых GDI+. Это гарантирует, что все CImage объекты, созданные непосредственно или косвенно библиотекой DLL, всегда уничтожаются должным образом и GdiplusShutdown не вызываются из DllMain.

Note

Использование глобальных CImage объектов в библиотеке DLL не рекомендуется. Если вам нужно использовать глобальный CImage объект в библиотеке DLL, вызовите CImage::ReleaseGDIPlus явный выпуск ресурсов, используемых GDI+.

CImage невозможно выбрать новый CDCобъект. CImage создает собственный HDC образ. HBITMAP Так как можно выбрать только один HDC раз, HBITMAP связанный с CImage ним не может быть выбран в другойHDC. Если вам нужен CDC, извлеките HDC его из CImage и присвойте ему CDC::FromHandle.

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();

При использовании CImage в проекте MFC обратите внимание, какие функции-члены в проекте ожидают указатель на CBitmap объект. Если вы хотите использовать CImage такую функцию, например CMenu::AppendMenu, используйте CBitmap::FromHandle, передайте ее CImageHBITMAPи используйте возвращенную 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);
}

Через CImageнего вы можете получить доступ к фактическим битам раздела DIB. Вы можете использовать CImage объект в любом месте, где вы ранее использовали раздел Win32 HBITMAP или DIB.

Можно использовать CImage из MFC или ATL.

Note

При создании проекта с помощью CImageнеобходимо определить CString перед включением atlimage.h. Если проект использует ATL без MFC, включите atlstr.h его перед включением atlimage.h. Если проект использует MFC (или если он является проектом ATL с поддержкой MFC), включите afxstr.h его перед включением atlimage.h.

Аналогичным образом необходимо включить перед включением atlimage.hatlimpl.cpp. Для этого легко включите atlimage.h (pch.hstdafx.hв Visual Studio 2017 и более ранних версий).

Requirements

Header:atlimage.h

CImage::AlphaBlend

Отображает растровые изображения с прозрачными или полутранспарентными пикселями.

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
Обработка контекста целевого устройства.

xDest
Координата x в логических единицах левого верхнего угла прямоугольника назначения.

yDest
Координата y в логических единицах верхнего левого угла прямоугольника назначения.

bSrcAlpha
Значение альфа-прозрачности, которое будет использоваться во всей исходной растровой карте. Значение по умолчанию 0xff (255) предполагает, что изображение непрозрачно, и что вы хотите использовать только альфа-значения для каждого пикселя.

bBlendOp
Функция альфа-смешивания для исходных и целевых растровых изображений, глобальное альфа-значение, которое будет применяться ко всей исходной растровой карте и форматированию данных для исходного растрового изображения. Функции исходной и целевой смешивания в настоящее время ограничены AC_SRC_OVER.

pointDest
Ссылка на POINT структуру, которая определяет левый верхний угол прямоугольника назначения в логических единицах.

nDestWidth
Ширина в логических единицах прямоугольника назначения.

nDestHeight
Высота в логических единицах прямоугольника назначения.

xSrc
Логическая координата x левого верхнего угла исходного прямоугольника.

ySrc
Логическая координата y левого верхнего угла исходного прямоугольника.

nSrcWidth
Ширина в логических единицах исходного прямоугольника.

nSrcHeight
Высота в логических единицах исходного прямоугольника.

rectDest
Ссылка на RECT структуру, определяющая назначение.

rectSrc
Ссылка на RECT структуру, определяющая источник.

Return Value

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Remarks

Растровые изображения альфа-смешивания поддерживают смешивание цветов на основе пикселя.

Если bBlendOp задано значение по умолчанию AC_SRC_OVER, исходный растровый рисунок помещается над целевой растровой картой на основе альфа-значений исходных пикселей.

CImage::Attach

Присоединяется hBitmap к объекту CImage .

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

Parameters

hBitmap
Дескриптор HBITMAP.

eOrientation
Указывает ориентацию растрового изображения. Может применяться один из перечисленных ниже типов.

  • DIBOR_DEFAULT Ориентация растрового изображения определяется операционной системой.

  • DIBOR_BOTTOMUP Строки растрового изображения находятся в обратном порядке. Это приводит CImage::GetBits к возврату указателя в конце буфера растрового изображения и CImage::GetPitch возврату отрицательного числа.

  • DIBOR_TOPDOWN Линии растрового рисунка находятся вверху до нижнего порядка. Это приводит CImage::GetBits к возврату указателя на первый байт буфера растрового изображения и CImage::GetPitch возврат положительного числа.

Remarks

Растровое изображение может быть либо растровым изображением раздела, отличной от DIB, либо растровым изображением раздела DIB. См IsDIBSection . список методов, которые можно использовать только с растровыми изображениями раздела DIB.

CImage::BitBlt

Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.

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
Назначение HDC.

xDest
Логическая координата x левого верхнего угла прямоугольника назначения.

yDest
Логическая координата y левого верхнего угла прямоугольника назначения.

dwROP
Операция растра, выполняемая. Коды операций растра определяют точно, как объединить биты источника, назначения и шаблона (как определено выбранной в данный момент кистью) для формирования назначения. Ознакомьтесь BitBlt со списком других кодов операций с растрами и их описаниями в windows SDK.

pointDest
Структура POINT , указывающая левый верхний угол прямоугольника назначения.

nDestWidth
Ширина в логических единицах прямоугольника назначения.

nDestHeight
Высота в логических единицах прямоугольника назначения.

xSrc
Логическая координата x левого верхнего угла исходного прямоугольника.

ySrc
Логическая координата y левого верхнего угла исходного прямоугольника.

rectDest
Структура RECT , указывающая прямоугольник назначения.

pointSrc
Структура POINT , указывающая левый верхний угол исходного прямоугольника.

Return Value

Ненулевое значение в случае успеха, иначе — 0.

Remarks

Дополнительные сведения см BitBlt . в пакете SDK для Windows.

CImage::CImage

Формирует объект CImage.

CImage() throw();

Remarks

После создания объекта, вызова CreateLoadили LoadFromResourceAttach подключения растрового изображения к объекту.

Примечание . В Visual Studio этот класс сохраняет количество созданных CImage объектов. Всякий раз, когда число переходит к 0, функция GdiplusShutdown автоматически вызывается для выпуска ресурсов, используемых GDI+. Это гарантирует, что все CImage объекты, созданные непосредственно или косвенно библиотекой DLL, всегда уничтожаются должным образом и не GdiplusShutdown вызываются из DllMain.

Использование глобальных CImage объектов в библиотеке DLL не рекомендуется. Если вам нужно использовать глобальный CImage объект в библиотеке DLL, вызовите CImage::ReleaseGDIPlus явный выпуск ресурсов, используемых GDI+.

CImage::Create

Создает растровое CImage изображение и присоединяет его к ранее созданному CImage объекту.

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

Parameters

nWidth
Ширина растрового CImage изображения в пикселях.

nHeight
Высота растрового CImage изображения в пикселях. Если nHeight это положительно, то растровое изображение — это нижний путь DIB, а его источник — левый нижний угол. Если nHeight это отрицательно, то растровое изображение является верхним вниз DIB, а его источником является верхний левый угол.

nBPP
Числа битов на пиксель в растровом рисунке. Обычно 4, 8, 16, 24 или 32. Может быть 1 для монохромных растровых изображений или маск.

dwFlags
Указывает, имеет ли объект растрового изображения альфа-канал. Может быть сочетанием нуля или нескольких следующих значений:

  • createAlphaChannel Можно использовать только в том случае, если nBPP значение равно 32 и eCompression имеет значение BI_RGB. Если задано, созданное изображение имеет альфа-значение (прозрачность) для каждого пикселя, хранящегося в 4-м байте каждого пикселя (неиспользуемом в 32-разрядном изображении). Этот альфа-канал автоматически используется при вызове CImage::AlphaBlend.

Note

При вызовах CImage::Drawизображения с альфа-каналом автоматически смешиваются с назначением.

Return Value

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

CImage::CreateEx

Создает растровое CImage изображение и присоединяет его к ранее созданному CImage объекту.

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

Parameters

nWidth
Ширина растрового CImage изображения в пикселях.

nHeight
Высота растрового CImage изображения в пикселях. Если nHeight это положительно, то растровое изображение — это нижний путь DIB, а его источник — левый нижний угол. Если nHeight это отрицательно, то растровое изображение является верхним вниз DIB, а его источником является верхний левый угол.

nBPP
Числа битов на пиксель в растровом рисунке. Обычно 4, 8, 16, 24 или 32. Может быть 1 для монохромных растровых изображений или маск.

eCompression
Указывает тип сжатия для сжатого нижнего нижнего растрового изображения (не удается сжать верхний вниз ДИБ). Может использоваться одно из следующих значений:

  • BI_RGB Формат распаковлен. Указание этого значения при вызове CImage::CreateEx эквивалентно вызову CImage::Create.

  • BI_BITFIELDS Формат распаковлен, а таблица цветов состоит из трех DWORD масок цвета, которые указывают красные, зеленые и синие компоненты соответственно каждого пикселя. Это допустимо при использовании с 16-32-bpp-растровыми изображениями.

pdwBitfields
Используется только в том случае, если eCompression задано BI_BITFIELDSзначение , в противном случае оно должно быть NULL. Указатель на массив трех DWORD битовых массивов, указывающий, какие биты каждого пикселя используются для красных, зеленых и синих компонентов цвета соответственно. Сведения об ограничениях для битовых полей см BITMAPINFOHEADER . в пакете SDK для Windows.

dwFlags
Указывает, имеет ли объект растрового изображения альфа-канал. Может быть сочетанием нуля или нескольких следующих значений:

  • createAlphaChannel Можно использовать только в том случае, если nBPP значение равно 32 и eCompression имеет значение BI_RGB. Если задано, созданное изображение имеет альфа-значение (прозрачность) для каждого пикселя, хранящегося в 4-м байте каждого пикселя (неиспользуемом в 32-разрядном изображении). Этот альфа-канал автоматически используется при вызове CImage::AlphaBlend.

    Note

    При вызовах CImage::Drawизображения с альфа-каналом автоматически смешиваются с назначением.

Return Value

TRUE в случае успешного выполнения. В противном случае — значение FALSE.

Example

В следующем примере создается 100x100 пиксельная растровая карта, используя 16 битов для кодирования каждого пикселя. В заданном 16-разрядном пикселе биты 0-3 кодируют красный компонент, биты 4-7 кодируют зеленый цвет и биты 8-11 кодируют синий. Оставшиеся 4 бита не используются.

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

CImage::Destroy

Отсоединяет растровое изображение от CImage объекта и уничтожает растровое изображение.

void Destroy() throw();

CImage::Detach

Отсоединяет растровое изображение от CImage объекта.

HBITMAP Detach() throw();

Return Value

Дескриптор отсоединяемого растрового изображения или NULL если растровое изображение не подключено.

CImage::Draw

Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.

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
Дескриптор контекста конечного устройства.

xDest
Координата x в логических единицах левого верхнего угла прямоугольника назначения.

yDest
Координата y в логических единицах верхнего левого угла прямоугольника назначения.

nDestWidth
Ширина в логических единицах прямоугольника назначения.

nDestHeight
Высота в логических единицах прямоугольника назначения.

xSrc
Координата x в логических единицах левого верхнего угла исходного прямоугольника.

ySrc
Координата y в логических единицах верхнего левого угла исходного прямоугольника.

nSrcWidth
Ширина в логических единицах исходного прямоугольника.

nSrcHeight
Высота в логических единицах исходного прямоугольника.

rectDest
Ссылка на RECT структуру, определяющая назначение.

rectSrc
Ссылка на RECT структуру, определяющая источник.

pointDest
Ссылка на POINT структуру, которая определяет левый верхний угол прямоугольника назначения в логических единицах.

Return Value

Имеет ненулевое значение в случае успешного выполнения, иначе — 0.

Remarks

Draw выполняет ту же операцию, что StretchBltи изображение, если изображение не содержит прозрачный цвет или альфа-канал. В этом случае Draw выполняет ту же операцию, что TransparentBlt и AlphaBlend требуется.

Для версий, Draw которые не указывают исходный прямоугольник, по умолчанию используется весь исходный образ. Для версии, которая не указывает размер для целевого прямоугольника, размер исходного Draw изображения является значением по умолчанию, а растяжение или сжатие не происходит.

CImage::GetBits

Извлекает указатель на фактические битовые значения заданного пикселя в растровом рисунке.

void* GetBits() throw();

Return Value

Указатель на буфер растрового изображения. Если растровое изображение является нижней частью DIB, указатель указывает ближе к концу буфера. Если растровое изображение является верхним вниз DIB, указатель указывает на первый байт буфера.

Remarks

С помощью этого указателя вместе со значением, возвращаемым GetPitch, можно найти и изменить отдельные пиксели на изображении.

Note

Этот метод поддерживает только растровые изображения раздела DIB; следовательно, вы обращаетесь к пикселям CImage объекта так же, как и пиксели раздела DIB. Возвращаемый указатель указывает на пиксель в расположении (0, 0).

CImage::GetBPP

Извлекает значение битов на пиксель.

int GetBPP() const throw();

Return Value

Количество битов на пиксель.

Remarks

Это значение определяет количество битов, определяющих каждый пиксель и максимальное количество цветов в растровом рисунке.

Биты на пиксель обычно 1, 4, 8, 16, 24 или 32. biBitCount Дополнительные сведения об этом значении BITMAPINFOHEADER см. в пакете SDK для Windows.

CImage::GetColorTable

Извлекает значения цвета красного, зеленого, синего (RGB) из диапазона записей в палитре раздела DIB.

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

Parameters

iFirstColor
Индекс таблицы цветов первой записи для получения.

nColors
Количество извлекаемых записей таблицы цветов.

prgbColors
Указатель на массив RGBQUAD структур для получения записей таблицы цветов.

CImage::GetDC

Извлекает контекст устройства, на который в данный момент выбран образ.

HDC GetDC() const throw();

Return Value

Дескриптор для контекста устройства.

Remarks

Для каждого вызова GetDCнеобходимо выполнить последующий вызов ReleaseDC.

CImage::GetExporterFilterString

Находит форматы изображений, доступные для сохранения изображений.

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

Parameters

strExporters
Ссылка на объект CSimpleString. Дополнительные сведения см. в примечаниях.

aguidFileTypes
Массив идентификаторов GUID с каждым элементом, соответствующим одному из типов файлов в строке. В приведенном ниже примере pszAllFilesDescription используется aguidFileTypes[0] и остальные значения массива — форматы файлов изображений, GUID_NULL поддерживаемые текущей операционной системой.

Note

Полный список констант см. в разделе "Константы формата образа" в пакете SDK для Windows.

pszAllFilesDescription
Если этот параметр не NULLзадан, строка фильтра будет иметь один дополнительный фильтр в начале списка. Этот фильтр будет иметь текущее значение pszAllFilesDescription описания и принимает файлы любого расширения, поддерживаемого любым другим экспортером в списке.

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
Набор битовых флагов, указывающих, какие типы файлов следует исключить из списка. Допустимые флаги:

  • excludeGIF = 0x01 исключает GIF-файлы.

  • excludeBMP = 0x02 исключает файлы BMP (Растровая карта Windows).

  • excludeEMF = 0x04 исключает файлы EMF (расширенный метафайл).

  • excludeWMF = 0x08 исключает файлы WMF (Метафайл Windows).

  • excludeJPEG = 0x10 исключает JPEG-файлы.

  • excludePNG = 0x20 исключает PNG-файлы.

  • excludeTIFF = 0x40 исключает TIFF-файлы.

  • excludeIcon = 0x80 исключает файлы ICO (значок Windows).

  • excludeOther = 0x80000000 исключает любой другой тип файла, не указанный выше.

  • excludeDefaultLoad = 0 для загрузки все типы файлов включены по умолчанию

  • excludeDefaultSave = excludeIcon | excludeEMF | excludeWMF Для сохранения эти файлы исключаются по умолчанию, так как они обычно имеют особые требования.

chSeparator
Разделитель, используемый между форматами изображений. Дополнительные сведения см. в примечаниях.

Return Value

Стандартный HRESULT.

Remarks

В объект MFC CFileDialog можно передать полученную строку форматирования, чтобы предоставить расширения файлов доступных форматов изображений в диалоговом окне "Сохранить как файл".

strExporter Параметр имеет формат:

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

где | является символ разделителя, заданный .chSeparator For example:

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

Используйте разделитель | по умолчанию, если передать эту строку объекту MFC CFileDialog . Используйте разделитель '\0' NULL, если передать эту строку в обычное диалоговое окно "Сохранить файл".

CImage::GetHeight

Извлекает высоту изображения в пикселях.

int GetHeight() const throw();

Return Value

Высота изображения в пикселях.

CImage::GetImporterFilterString

Находит форматы изображений, доступные для загрузки изображений.

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

Parameters

strImporters
Ссылка на объект CSimpleString. Дополнительные сведения см. в примечаниях.

aguidFileTypes
Массив идентификаторов GUID с каждым элементом, соответствующим одному из типов файлов в строке. В приведенном ниже примере pszAllFilesDescription с остальными значениями массива являются форматы файлов изображений, aguidFileTypes[0]GUID_NULL поддерживаемые текущей операционной системой.

Note

Полный список констант см. в разделе "Константы формата образа" в пакете SDK для Windows.

pszAllFilesDescription
Если этот параметр не NULLзадан, строка фильтра будет иметь один дополнительный фильтр в начале списка. Этот фильтр будет иметь текущее значение pszAllFilesDescription описания и принимает файлы любого расширения, поддерживаемого любым другим экспортером в списке.

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
Набор битовых флагов, указывающих, какие типы файлов следует исключить из списка. Допустимые флаги:

  • excludeGIF = 0x01 исключает GIF-файлы.

  • excludeBMP = 0x02 исключает файлы BMP (Растровая карта Windows).

  • excludeEMF = 0x04 исключает файлы EMF (расширенный метафайл).

  • excludeWMF = 0x08 исключает файлы WMF (Метафайл Windows).

  • excludeJPEG = 0x10 исключает JPEG-файлы.

  • excludePNG = 0x20 исключает PNG-файлы.

  • excludeTIFF = 0x40 исключает TIFF-файлы.

  • excludeIcon = 0x80 исключает файлы ICO (значок Windows).

  • excludeOther = 0x80000000 исключает любой другой тип файла, не указанный выше.

  • excludeDefaultLoad = 0 для загрузки все типы файлов включены по умолчанию

  • excludeDefaultSave = excludeIcon | excludeEMF | excludeWMF Для сохранения эти файлы исключаются по умолчанию, так как они обычно имеют особые требования.

chSeparator
Разделитель, используемый между форматами изображений. Дополнительные сведения см. в примечаниях.

Remarks

В объект MFC CFileDialog можно передать полученную строку формата, чтобы предоставить расширения файлов доступных форматов изображений в диалоговом окне "Открыть файл".

strImporter Параметр имеет формат:

"Описание файла 0|. описание файла ext0|1|. ext1|... описание файла N|*.extN||

где | является символ разделителя, заданный .chSeparator For example:

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

Используйте разделитель | по умолчанию, если передать эту строку объекту MFC CFileDialog . Используйте разделитель '\0' NULL, если передать эту строку в общее диалоговое окно "Открыть файл".

CImage::GetMaxColorTableEntries

Извлекает максимальное количество записей в таблице цветов.

int GetMaxColorTableEntries() const throw();

Return Value

Количество записей в таблице цветов.

Remarks

Этот метод поддерживает только растровые изображения раздела DIB.

CImage::GetPitch

Извлекает поле изображения.

int GetPitch() const throw();

Return Value

Шаг изображения. Если возвращаемое значение отрицательное, то растровое изображение — это нижний путь DIB, а его источник — левый нижний угол. Если возвращаемое значение является положительным, то растровое изображение — это верхний вниз DIB, а его источник — верхний левый угол.

Remarks

Поле — это расстояние в байтах между двумя адресами памяти, представляющими начало одной растровой линии и началом следующей строки растрового изображения. Так как шаг измеряется в байтах, шаг изображения помогает определить формат пикселей. Поле также может включать дополнительную память, зарезервированную для растрового изображения.

Используйте GetPitch для GetBits поиска отдельных пикселей изображения.

Note

Этот метод поддерживает только растровые изображения раздела DIB.

CImage::GetPixel

Извлекает цвет пикселя в расположении, указанном x и y.

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

Parameters

x
Координата x пикселя.

y
Координата y пикселя.

Return Value

Красное, зеленое, синее (RGB) значение пикселя. Если пиксель находится за пределами текущей области вырезки, возвращается CLR_INVALIDвозвращаемое значение.

CImage::GetPixelAddress

Извлекает точный адрес пикселя.

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

Parameters

x
Координата x пикселя.

y
Координата y пикселя.

Remarks

Адрес определяется по координатам пикселя, шагу растрового изображения и битам на пиксель.

Для форматов, которые имеют менее 8 бит на пиксель, этот метод возвращает адрес байта, содержащего пиксель. Например, если формат изображения имеет 4 бита на пиксель, GetPixelAddress возвращает адрес первого пикселя в байте, и необходимо вычислить 2 пикселя в байтах.

Note

Этот метод поддерживает только растровые изображения раздела DIB.

CImage::GetTransparentColor

Извлекает индексированное расположение прозрачного цвета в цветовой палитре.

LONG GetTransparentColor() const throw();

Return Value

Индекс прозрачного цвета.

CImage::GetWidth

Извлекает ширину изображения в пикселях.

int GetWidth() const throw();

Return Value

Ширина растрового изображения в пикселях.

CImage::IsDIBSection

Определяет, является ли присоединенная растровая карта разделом DIB.

bool IsDIBSection() const throw();

Return Value

TRUE Значение DIB, если подключенное растровое изображение является разделом DIB. В противном случае — значение FALSE.

Remarks

Если растровое изображение не является разделом DIB, нельзя использовать следующие CImage методы, которые поддерживают только растровые изображения раздела DIB:

CImage::IsIndexed

Определяет, сопоставляются ли пиксели растрового изображения с цветовой палитрой.

bool IsIndexed() const throw();

Return Value

TRUE Значение ,если индексировано; в противном случае FALSE.

Remarks

Этот метод возвращается TRUE только в том случае, если растровое изображение равно 8-разрядному (256 цветам) или меньше.

Note

Этот метод поддерживает только растровые изображения раздела DIB.

CImage::IsNull

Определяет, загружается ли растровое изображение.

bool IsNull() const throw();

Remarks

Этот метод возвращает, TRUE если растровое изображение в данный момент не загружено; в противном случае FALSE.

CImage::IsTransparencySupported

Указывает, поддерживает ли приложение прозрачные растровые изображения.

static BOOL IsTransparencySupported() throw();

Return Value

Ненулевое значение, если текущая платформа поддерживает прозрачность. Otherwise 0.

Remarks

Если возвращаемое значение ненулевое, а прозрачность поддерживается, вызов AlphaBlendили TransparentBltDraw будет обрабатывать прозрачные цвета.

CImage::Load

Загружает изображение.

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

Parameters

pszFileName
Указатель на строку, содержащую имя файла изображения для загрузки.

pStream
Указатель на поток, содержащий имя загружаемого файла изображения.

Return Value

Стандартный HRESULT.

Remarks

Загружает изображение, указанное pszFileName или pStream.

Допустимые типы изображений: BMP, GIF, JPEG, PNG и TIFF.

CImage::LoadFromResource

Загружает образ из BITMAP ресурса.

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

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

Parameters

hInstance
Обработайте экземпляр модуля, содержащего образ, который нужно загрузить.

pszResourceName
Указатель на строку, содержащую имя ресурса, содержащего изображение для загрузки.

nIDResource
Идентификатор загружаемого ресурса.

Remarks

Ресурс должен быть типом BITMAP.

CImage::MaskBlt

Объединяет данные цвета для исходных и целевых растровых изображений с помощью указанной операции маски и растра.

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
Дескриптор модуля, исполняемый файл которого содержит ресурс.

xDest
Координата x в логических единицах левого верхнего угла прямоугольника назначения.

yDest
Координата y в логических единицах верхнего левого угла прямоугольника назначения.

nDestWidth
Ширина в логических единицах целевого прямоугольника и исходного растрового изображения.

nDestHeight
Высота в логических единицах целевого прямоугольника и исходного растрового изображения.

xSrc
Логическая координата x левого верхнего угла исходного растрового изображения.

ySrc
Логическая координата y левого верхнего угла исходного растрового изображения.

hbmMask
Обработка растрового изображения монохромной маски в сочетании с цветным растровым изображением в контексте исходного устройства.

xMask
Горизонтальное смещение пикселя для растрового изображения маски, указанного параметром hbmMask .

yMask
Смещение вертикального пикселя для растрового изображения маски, указанного параметром hbmMask .

dwROP
Указывает коды операций переднего плана и фонового растра, которые метод использует для управления сочетанием исходных и целевых данных. Код операции фонового растра хранится в байтах высокого порядка слова этого значения; Код операции растра переднего плана хранится в байтах низкого порядка слова этого значения; Слово с низким порядком этого значения игнорируется и должно быть равно нулю. Обсуждение переднего плана и фона в контексте этого метода см MaskBlt . в пакете SDK для Windows. Список распространенных кодов операций растровых операций см BitBlt . в пакете SDK для Windows.

rectDest
Ссылка на RECT структуру, определяющая назначение.

pointSrc
Структура POINT , указывающая левый верхний угол исходного прямоугольника.

pointMask
Структура POINT , указывающая левый верхний угол растрового изображения маски.

pointDest
Ссылка на POINT структуру, которая определяет левый верхний угол прямоугольника назначения в логических единицах.

Return Value

Ненулевое значение, если выполнено успешно, в противном случае — значение 0.

Remarks

Этот метод применяется только к Windows NT, версиям 4.0 и более поздним версиям.

CImage::operator HBITMAP

Используйте этот оператор для получения присоединенного дескриптора CImage GDI Windows объекта. Этот оператор является оператором приведения, который поддерживает прямое использование HBITMAP объекта.

CImage::PlgBlt

Выполняет передачу битового блока из прямоугольника в контекст исходного устройства в параллелограмму в контексте конечного устройства.

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
Дескриптор контекста конечного устройства.

pPoints
Указатель на массив из трех точек в логическом пространстве, который определяет три угла целевой параллелограммы. Верхний левый угол исходного прямоугольника сопоставляется с первой точкой в этом массиве, правым верхним углом второй точки в этом массиве, а левый нижний угол — третьей точкой. Правый нижний угол исходного прямоугольника сопоставляется с неявной четвертой точкой параллелограммы.

hbmMask
Дескриптор необязательного однохромного растрового изображения, который используется для маскирования цветов исходного прямоугольника.

xSrc
Координата x в логических единицах левого верхнего угла исходного прямоугольника.

ySrc
Координата y в логических единицах верхнего левого угла исходного прямоугольника.

nSrcWidth
Ширина в логических единицах исходного прямоугольника.

nSrcHeight
Высота в логических единицах исходного прямоугольника.

xMask
Координата x левого верхнего угла растрового изображения монохромного.

yMask
Координата y верхнего левого угла растрового изображения монохромного.

rectSrc
Ссылка на RECT структуру, указывающую координаты исходного прямоугольника.

pointMask
Структура POINT , указывающая левый верхний угол растрового изображения маски.

Return Value

Ненулевое значение, если выполнено успешно, в противном случае — значение 0.

Remarks

Если hbmMask идентифицирует допустимое монохромное растровое изображение, PlgBit используется для маскирования битов цветовых данных из исходного прямоугольника.

Этот метод применяется только к Windows NT, версиям 4.0 и более поздним версиям. Дополнительные сведения см PlgBlt . в пакете SDK для Windows.

CImage::ReleaseDC

Освобождает контекст устройства.

void ReleaseDC() const throw();

Remarks

Так как только одна растровая карта может быть выбрана в контексте устройства за раз, необходимо вызвать каждый вызов ReleaseDCGetDC.

CImage::ReleaseGDIPlus

Освобождает ресурсы, используемые GDI+.

void ReleaseGDIPlus() throw();

Remarks

Этот метод должен вызываться для свободных ресурсов, выделенных глобальным CImage объектом. См. раздел CImage::CImage.

CImage::Save

Сохраняет образ в указанном потоке или файле на диске.

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

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

Parameters

pStream
Указатель на объект COM IStream, содержащий данные образа файла.

pszFileName
Указатель на имя файла для изображения.

guidFileType
Тип файла для сохранения изображения как. Может применяться один из перечисленных ниже типов.

  • ImageFormatBMP Несжатое растровое изображение.

  • ImageFormatPNG Сжатое изображение переносимого сетевого рисунка (PNG).

  • ImageFormatJPEG Сжатое изображение JPEG.

  • ImageFormatGIF Сжатое изображение GIF.

Note

Полный список констант см. в разделе "Константы формата образа" в пакете SDK для Windows.

Return Value

Стандартный HRESULT.

Remarks

Вызовите эту функцию, чтобы сохранить изображение с помощью указанного имени и типа. guidFileType Если параметр не включен, расширение файла имени файла будет использоваться для определения формата изображения. Если расширение не указано, изображение будет сохранено в формате BMP.

CImage::SetColorTable

Задает значения цвета красного, зеленого, синего цвета (RGB) для диапазона записей в палитре раздела DIB.

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

Parameters

iFirstColor
Индекс таблицы цветов первой записи, заданной.

nColors
Количество записей таблицы цветов, которые нужно задать.

prgbColors
Указатель на массив RGBQUAD структур для задания записей таблицы цветов.

Remarks

Этот метод поддерживает только растровые изображения раздела DIB.

CImage::SetPixel

Задает цвет пикселя в заданном расположении в растровом рисунке.

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

Parameters

x
Горизонтальное расположение заданного пикселя.

y
Вертикальное расположение заданного пикселя.

color
Цвет, для которого задается пиксель.

Remarks

Этот метод завершается ошибкой, если координаты пикселей лежат за пределами выбранной области вырезки.

CImage::SetPixelIndexed

Задает цвет пикселей, расположенный iIndex в цветовой палитре.

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

Parameters

x
Горизонтальное расположение заданного пикселя.

y
Вертикальное расположение заданного пикселя.

iIndex
Индекс цвета в цветовой палитре.

CImage::SetPixelRGB

Задает пиксель в расположениях, указанных в цветах, xуказанных yr в виде , и gв красном, зеленом, синем (RGB) изображении.b

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

Parameters

x
Горизонтальное расположение заданного пикселя.

y
Вертикальное расположение заданного пикселя.

r
Интенсивность красного цвета.

g
Интенсивность зеленого цвета.

b
Интенсивность синего цвета.

Remarks

Красные, зеленые и синие параметры представлены числом от 0 до 255. Если задать для всех трех параметров нулевое значение, объединенный результирующий цвет является черным. Если задать для всех трех параметров значение 255, объединенный результирующий цвет будет белым.

CImage::SetTransparentColor

Задает цвет в заданном индексованном расположении как прозрачный.

LONG SetTransparentColor(LONG iTransparentColor) throw();

Parameters

iTransparentColor
Индекс в цветовой палитре цвета, который необходимо задать для прозрачного. Если значение -1, цвет не задан прозрачным.

Return Value

Индекс цвета, заданного ранее как прозрачный.

CImage::StretchBlt

Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.

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
Дескриптор контекста конечного устройства.

xDest
Координата x в логических единицах левого верхнего угла прямоугольника назначения.

yDest
Координата y в логических единицах верхнего левого угла прямоугольника назначения.

nDestWidth
Ширина в логических единицах прямоугольника назначения.

nDestHeight
Высота в логических единицах прямоугольника назначения.

dwROP
Операция растра, выполняемая. Коды операций растра определяют точно, как объединить биты источника, назначения и шаблона (как определено выбранной в данный момент кистью) для формирования назначения. Ознакомьтесь BitBlt со списком других кодов операций с растрами и их описаниями в windows SDK.

rectDest
Ссылка на RECT структуру, определяющая назначение.

xSrc
Координата x в логических единицах левого верхнего угла исходного прямоугольника.

ySrc
Координата y в логических единицах верхнего левого угла исходного прямоугольника.

nSrcWidth
Ширина в логических единицах исходного прямоугольника.

nSrcHeight
Высота в логических единицах исходного прямоугольника.

rectSrc
Ссылка на RECT структуру, определяющая источник.

Return Value

Ненулевое значение, если выполнено успешно, в противном случае — значение 0.

Remarks

Дополнительные сведения см StretchBlt . в пакете SDK для Windows.

CImage::TransparentBlt

Копирует растровое изображение из исходного контекста устройства в текущий контекст устройства.

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
Дескриптор контекста конечного устройства.

xDest
Координата x в логических единицах левого верхнего угла прямоугольника назначения.

yDest
Координата y в логических единицах верхнего левого угла прямоугольника назначения.

nDestWidth
Ширина в логических единицах прямоугольника назначения.

nDestHeight
Высота в логических единицах прямоугольника назначения.

crTransparent
Цвет в исходном растровом рисунке, который будет рассматриваться как прозрачный. По умолчанию, указывая, что цвет, заданный в настоящее время как прозрачный цвет изображения, CLR_INVALIDдолжен использоваться.

rectDest
Ссылка на RECT структуру, определяющая назначение.

xSrc
Координата x в логических единицах левого верхнего угла исходного прямоугольника.

ySrc
Координата y в логических единицах верхнего левого угла исходного прямоугольника.

nSrcWidth
Ширина в логических единицах исходного прямоугольника.

nSrcHeight
Высота в логических единицах исходного прямоугольника.

rectSrc
Ссылка на RECT структуру, определяющая источник.

Return Value

TRUE Значение , если успешно выполнено, в противном случае FALSE.

Remarks

TransparentBlt поддерживается для исходных растровых изображений 4 бита на пиксель и 8 бит на пиксель. Используется CImage::AlphaBlend для указания 32-разрядных растровых изображений на пиксель с прозрачностью.

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 Образец
SimpleImage Образец
Device-Independent Bitmaps
CreateDIBSection
Компоненты ATL COM Desktop
Device-Independent Bitmaps