Чтобы нарисовать изображение с альфа-смешивание, объявить Gdiplus::ImageAttributes
и Gdiplus::ColorMatrix
с требуемым альфа-каналом:
float alpha = 0.25f;
Gdiplus::ColorMatrix matrix =
{
1, 0, 0, 0, 0,
0, 1, 0, 0, 0,
0, 0, 1, 0, 0,
0, 0, 0, alpha, 0,
0, 0, 0, 0, 1
};
Gdiplus::ImageAttributes attrib;
attrib.SetColorMatrix(&matrix);
graphics.DrawImage(&image,
Gdiplus::Rect(10, 10, image.GetWidth(), image.GetHeight()),
0, 0, image.GetWidth(), image.GetHeight(), Gdiplus::UnitPixel, &attrib);
Смотрите также: Using a Color Matrix to Transform a Single Color
Обратите внимание, что GetDC()
обычно не используется в MFC. Если вы его используете, обязательно звоните ReleaseDC(pDC)
, когда pDC
больше не требуется. Или просто используйте CClientDC dc(this)
, который имеет автоматическую очистку. Если картина сделана в OnPaint
затем использовать CPaintDC
, который также имеет автоматическую очистку:
void CMyWnd::OnPaint()
{
CPaintDC dc(this);
Gdiplus::Graphics graphics(dc);
...
}
Вы спрашиваете два разных вопроса: название наводит на мысль, что вы как-то хотите, альфа-канал изображения, чтобы иметь никакого эффекта, в то время как вопрос, кажется, только хочет, чтобы весь образ был на 25% непрозрачности. Какой вам нужен? – IInspectable