1.先把图元画在bitmap上。
void
draw_ellipse (const db::DPoint &q1,
const db::DPoint &q2,
double length_u,
bool sel,
lay::CanvasPlane *bitmap,
lay::Renderer &renderer)
{
double sel_width = 2 / renderer.resolution ();
if (length_u < 1e-5 /*micron*/) {
if (sel) {
db::DBox b (q1 - db::DVector (sel_width * 0.5, sel_width * 0.5),
q2 + db::DVector (sel_width * 0.5, sel_width * 0.5));
renderer.draw (b, bitmap, bitmap, 0, 0); //画图元
} else {
renderer.draw (db::DEdge (q1, q1), 0, bitmap, 0, 0);
}
...
}
2.画布Canvas是一个widget,画布刷新时,会绘制bitmap。
//layLayoutCanvas.cc
void
LayoutCanvas::paintEvent (QPaintEvent *)
{
...
do_render (m_viewport_l, *this, false);
...
}
//layViewObject.cc
void
ViewObjectWidget::do_render (const lay::Viewport &vp, lay::Vie

本文介绍了如何使用bitmap在画布(Canvas)上绘制图元的基本原理和技术实现细节,包括了图元绘制的具体步骤以及画布刷新时的绘制流程。
最低0.47元/天 解锁文章
4459

被折叠的 条评论
为什么被折叠?



