内容发布更新时间 : 2025/4/20 11:28:34星期一 下面是文章的全部内容请认真阅读。
?? agg::renderer_scanline_aa_solid
// Rasterizer & scanline
agg::rasterizer_scanline_aa<> ras; agg::scanline_p8 sl;
??
?? // 多义线(三角形) ?? ras.move_to_d(20.7, 34.15); ?? ras.line_to_d(398.23, 123.43); ?? ras.line_to_d(165.45, 401.87); ??
?? // 设置颜色后渲染
?? ren.color(agg::rgba8(80, 90, 60)); ?? agg::render_scanlines(ras, sl, ren);
?? //============================================================ ??
?? // 把bmp显示到hdc上,如果图片中有Alpha通道,可以使用AlphaBlend代替BitBlt。 ?? ::BitBlt( ?? hdc, ?? rt.left, ?? rt.top, ?? ?? ?? ??
width, height, mem_dc, 0,
?? 0,
?? SRCCOPY ?? ); ??
?? // 释放资源
?? ::SelectObject(mem_dc, temp); ?? ::DeleteObject(bmp); ?? ::DeleteObject(mem_dc);
得到的图形是:
使用AGG提供的pixel_map类
如果你觉得上面的方法还是有点烦的话(这个要怪MS的API太麻烦),可以考虑用AGG友情提供的pixel_map类,用它操作 BMP方便多了。(要把[AGG]\\src\\platform\\win32\\agg_win32_bmp.cpp加入一起编译)
?? #include
?? #include
?? #include
?? CRect rc; ?? ?? ?? ??
GetClientRect(&rc);
agg::pixel_map pm;
pm.create(rc.right,rc.bottom,agg::org_color32);
??
?? //============================================================ ??? // 以下是AG