add: Canvas can draw geometry now

This commit is contained in:
Haibo 2018-11-20 15:18:54 +08:00 committed by Nomango
parent e435d94e4e
commit 57b528d67f
3 changed files with 39 additions and 1 deletions

View File

@ -22,6 +22,7 @@
#include "render.h"
#include "logs.h"
#include "Image.h"
#include "Geometry.h"
namespace easy2d
{
@ -247,7 +248,7 @@ namespace easy2d
void Canvas::DrawImage(spImage const & image, float opacity)
{
if (image->GetBitmap())
if (image && image->GetBitmap())
{
render_target_->DrawBitmap(
image->GetBitmap().Get(),
@ -293,6 +294,20 @@ namespace easy2d
);
}
void Canvas::DrawGeometry(spGeometry const & geo)
{
if (geo && geo->geo_)
{
render_target_->DrawGeometry(
geo->geo_.Get(),
stroke_brush_.Get(),
stroke_width_,
outline_join_style_.Get()
);
cache_expired_ = true;
}
}
void Canvas::FillCircle(const Point & center, float radius)
{
render_target_->FillEllipse(
@ -357,6 +372,18 @@ namespace easy2d
cache_expired_ = true;
}
void Canvas::FillGeometry(spGeometry const & geo)
{
if (geo && geo->geo_)
{
render_target_->FillGeometry(
geo->geo_.Get(),
fill_brush_.Get()
);
cache_expired_ = true;
}
}
void Canvas::BeginPath(Point const& begin_pos)
{
current_geometry_ = nullptr;

View File

@ -95,6 +95,11 @@ namespace easy2d
Point const& point /* 文字位置 */
);
// 뺌섯부暠近긋움
void DrawGeometry(
spGeometry const& geo
);
// 填充圆形
void FillCircle(
const Point& center,
@ -120,6 +125,11 @@ namespace easy2d
float radius_y
);
// 輕념섯부暠近
void FillGeometry(
spGeometry const& geo
);
// 开始绘制路径
void BeginPath(
Point const& begin_pos /* 路径起始点 */

View File

@ -39,6 +39,7 @@ namespace easy2d
class Geometry
: public Unit
{
friend class Canvas;
friend class GeometryNode;
public: