AGG高质量图形输出

内容发布更新时间 : 2025/4/20 11:28:34星期一 下面是文章的全部内容请认真阅读。

?? agg::renderer_scanline_aa_solid > ren(renb); ?? ?? ?? ??

// 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

?? #include ?? #include

?? #include ?? ...

?? CRect rc; ?? ?? ?? ??

GetClientRect(&rc);

agg::pixel_map pm;

pm.create(rc.right,rc.bottom,agg::org_color32);

??

?? //============================================================ ??? // 以下是AG

>>灞曞紑鍏ㄦ枃<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4 ceshi