用颜色初始化 Gdiplus 位图
Initialize Gdiplus bitmap with color
我打算在位图 pBmp 中绘制。那部分工作正常。我想用(背景)颜色初始化这个位图。
这是我实现它的解决方法:
#include <windows.h>
#include <Gdiplus.h>
#define BITMAPX 1000
#define BITMAPY 600
Gdiplus::Bitmap *pBmp;
Gdiplus::Graphics *pGraph;
void init()
{
pBmp = new Gdiplus::Bitmap(BITMAPX, BITMAPY, PixelFormat24bppRGB); // Uninitialized bitmap
pGraph = Gdiplus::Graphics::FromImage(pBmp); // Uninitialized graphics object
pGraph->Clear(Color::Snow); // Set background color and use as a template
delete pBmp; // Free for reuse
pBmp = new Gdiplus::Bitmap(BITMAPX, BITMAPY, pGraph); // Create bitmap with background color
}
Palette 等肯定有更好的方法,但在谷歌搜索了一段时间后,我找不到一个简明的例子来实现它。
有人有单线吗?
PixelFormat24bppRGB
是没有 alpha 通道的 24 位位图。使用 PixelFormat32bppARGB
用于带 alpha 通道的 32 位位图。
Gdiplus::Bitmap bmp(100, 100, Gdiplus::PixelFormat32bppARGB);
填充透明背景:
Gdiplus::Graphics *mem = Gdiplus::Graphics::FromImage(&bmp);
Gdiplus::SolidBrush brush_tr(Gdiplus::Color::Transparent);
mem->FillRectangle(&brush_tr, 0,0,100,100);
如果在 HDC
设备上下文
上打印,这应该显示为空白
Gdiplus::Graphics g(hdc);
g.DrawImage(&bmp, 0, 0);
我打算在位图 pBmp 中绘制。那部分工作正常。我想用(背景)颜色初始化这个位图。 这是我实现它的解决方法:
#include <windows.h>
#include <Gdiplus.h>
#define BITMAPX 1000
#define BITMAPY 600
Gdiplus::Bitmap *pBmp;
Gdiplus::Graphics *pGraph;
void init()
{
pBmp = new Gdiplus::Bitmap(BITMAPX, BITMAPY, PixelFormat24bppRGB); // Uninitialized bitmap
pGraph = Gdiplus::Graphics::FromImage(pBmp); // Uninitialized graphics object
pGraph->Clear(Color::Snow); // Set background color and use as a template
delete pBmp; // Free for reuse
pBmp = new Gdiplus::Bitmap(BITMAPX, BITMAPY, pGraph); // Create bitmap with background color
}
Palette 等肯定有更好的方法,但在谷歌搜索了一段时间后,我找不到一个简明的例子来实现它。 有人有单线吗?
PixelFormat24bppRGB
是没有 alpha 通道的 24 位位图。使用 PixelFormat32bppARGB
用于带 alpha 通道的 32 位位图。
Gdiplus::Bitmap bmp(100, 100, Gdiplus::PixelFormat32bppARGB);
填充透明背景:
Gdiplus::Graphics *mem = Gdiplus::Graphics::FromImage(&bmp);
Gdiplus::SolidBrush brush_tr(Gdiplus::Color::Transparent);
mem->FillRectangle(&brush_tr, 0,0,100,100);
如果在 HDC
设备上下文
Gdiplus::Graphics g(hdc);
g.DrawImage(&bmp, 0, 0);