Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Класс
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