22#include <kiwano/2d/Actor.h>
23#include <kiwano/render/ShapeMaker.h>
24#include <kiwano/render/RenderContext.h>
28class CanvasRenderContext;
60 void ResizeAndClear(
const Size& size);
69 void EnableCommandListMode(
bool enable);
106 void DrawLine(
const Point& begin,
const Point& end);
112 void DrawCircle(
const Point& center,
float radius);
118 void DrawEllipse(
const Point& center,
const Vec2& radius);
123 void DrawRect(
const Rect& rect);
129 void DrawRoundedRect(
const Rect& rect,
const Vec2& radius);
140 void FillCircle(
const Point& center,
float radius);
146 void FillEllipse(
const Point& center,
const Vec2& radius);
151 void FillRect(
const Rect& rect);
157 void FillRoundedRect(
const Rect& rect,
const Vec2& radius);
194 void Clear(
const Color& clear_color);
199 void SetFillColor(
const Color& color);
213 void SetStrokeColor(
const Color& color);
236 void PushClipRect(
const Rect& clip_rect);
245 void PushLayer(
Layer& layer);
253 Size GetSize()
const;
257 void SetTransform(
const Matrix3x2& matrix);
261 void SetAntialiasMode(
bool enabled);
285 return cached_bitmap_;
305 actor->OnRender(*ctx_);
314 ctx_->SetCurrentBrush(stroke_brush_);
315 ctx_->SetCurrentStrokeStyle(stroke_style_);
316 ctx_->DrawShape(*shape);
324 ctx_->SetCurrentBrush(stroke_brush_);
325 ctx_->SetCurrentStrokeStyle(stroke_style_);
326 ctx_->DrawLine(begin, end);
333 ctx_->SetCurrentBrush(stroke_brush_);
334 ctx_->SetCurrentStrokeStyle(stroke_style_);
335 ctx_->DrawCircle(center, radius);
342 ctx_->SetCurrentBrush(stroke_brush_);
343 ctx_->SetCurrentStrokeStyle(stroke_style_);
344 ctx_->DrawEllipse(center, radius);
351 ctx_->SetCurrentBrush(stroke_brush_);
352 ctx_->SetCurrentStrokeStyle(stroke_style_);
353 ctx_->DrawRectangle(rect);
360 ctx_->SetCurrentBrush(stroke_brush_);
361 ctx_->SetCurrentStrokeStyle(stroke_style_);
362 ctx_->DrawRoundedRectangle(rect, radius);
370 ctx_->SetCurrentBrush(fill_brush_);
371 ctx_->FillShape(*shape);
379 ctx_->SetCurrentBrush(fill_brush_);
380 ctx_->FillCircle(center, radius);
387 ctx_->SetCurrentBrush(fill_brush_);
388 ctx_->FillEllipse(center, radius);
395 ctx_->SetCurrentBrush(fill_brush_);
396 ctx_->FillRectangle(rect);
403 ctx_->SetCurrentBrush(fill_brush_);
404 ctx_->FillRoundedRectangle(rect, radius);
411 this->
DrawBitmap(bitmap, pos, bitmap->GetSize(), crop_rect);
416 const Rect* crop_rect)
422 Rect dest_rect(pos, pos + size);
423 ctx_->DrawBitmap(*bitmap, crop_rect, &dest_rect);
438 ctx_->SetCurrentBrush(fill_brush_);
439 ctx_->SetCurrentStrokeStyle(stroke_style_);
440 ctx_->DrawTextLayout(*layout, point, stroke_brush_);
453 ctx_->Clear(clear_color);
460 fill_brush_ = MakePtr<Brush>();
462 fill_brush_->SetColor(color);
477 stroke_brush_ = brush;
484 stroke_brush_ = MakePtr<Brush>();
486 stroke_brush_->SetColor(color);
491 return stroke_brush_;
496 stroke_style_ = stroke_style;
501 return stroke_style_;
507 ctx_->PushClipRect(clip_rect);
519 ctx_->PushLayer(layer);
531 return ctx_->GetSize();
537 ctx_->SetTransform(matrix);
543 ctx_->SetAntialiasMode(enabled);
549 ctx_->SetTextAntialiasMode(mode);
画布渲染上下文
Definition: Canvas.h:82
void DrawEllipse(const Point ¢er, const Vec2 &radius)
画椭圆形边框
Definition: Canvas.h:338
void SetStrokeBrush(RefPtr< Brush > brush)
设置轮廓画刷
Definition: Canvas.h:475
void FillEllipse(const Point ¢er, const Vec2 &radius)
填充椭圆形
Definition: Canvas.h:383
void FillRoundedRect(const Rect &rect, const Vec2 &radius)
填充圆角矩形
Definition: Canvas.h:399
void DrawCircle(const Point ¢er, float radius)
画圆形边框
Definition: Canvas.h:329
void FillRect(const Rect &rect)
填充矩形
Definition: Canvas.h:391
Size GetSize() const
获取画布大小
Definition: Canvas.h:528
void SetFillBrush(RefPtr< Brush > brush)
设置填充画刷
Definition: Canvas.h:465
void DrawShape(RefPtr< Shape > shape)
画形状轮廓
Definition: Canvas.h:309
void PopLayer()
删除最近添加的图层
Definition: Canvas.h:522
void DrawActor(RefPtr< Actor > actor)
画角色
Definition: Canvas.h:300
void DrawLine(const Point &begin, const Point &end)
画线段
Definition: Canvas.h:320
void FillCircle(const Point ¢er, float radius)
填充圆形
Definition: Canvas.h:375
void SetAntialiasMode(bool enabled)
设置抗锯齿模式
Definition: Canvas.h:540
void PopClipRect()
删除最近添加的裁剪区域
Definition: Canvas.h:510
void Clear()
清空画布
Definition: Canvas.h:444
RefPtr< Brush > GetStrokeBrush() const
获取轮廓画刷
Definition: Canvas.h:489
void DrawRoundedRect(const Rect &rect, const Vec2 &radius)
画圆角矩形边框
Definition: Canvas.h:356
void EndDraw()
结束渲染
Definition: Canvas.h:294
void SetFillColor(const Color &color)
设置填充颜色
Definition: Canvas.h:456
void SetTextAntialiasMode(TextAntialiasMode mode)
设置文字抗锯齿模式
Definition: Canvas.h:546
RefPtr< StrokeStyle > GetStrokeStyle() const
获取轮廓样式
Definition: Canvas.h:499
RefPtr< Brush > GetFillBrush() const
获取填充画刷
Definition: Canvas.h:470
void SetStrokeColor(const Color &color)
设置轮廓颜色
Definition: Canvas.h:480
void DrawBitmap(RefPtr< Bitmap > bitmap, const Point &pos, const Rect *crop_rect=nullptr)
绘制位图
Definition: Canvas.h:407
void DrawRect(const Rect &rect)
画矩形边框
Definition: Canvas.h:347
void SetStrokeStyle(RefPtr< StrokeStyle > stroke_style)
设置轮廓样式
Definition: Canvas.h:494
void PushClipRect(const Rect &clip_rect)
添加一个裁剪区域
Definition: Canvas.h:504
void SetTransform(const Matrix3x2 &matrix)
设置渲染上下文的二维变换矩阵
Definition: Canvas.h:534
void BeginDraw()
开始渲染
Definition: Canvas.h:288
void PushLayer(Layer &layer)
添加一个图层
Definition: Canvas.h:516
void DrawTextLayout(StringView text, const TextStyle &style, const Point &point)
绘制文字布局
Definition: Canvas.h:427
void FillShape(RefPtr< Shape > shape)
填充形状
Definition: Canvas.h:365
画布
Definition: Canvas.h:41
RefPtr< Bitmap > GetTarget() const
获取输出目标
Definition: Canvas.h:283
基础对象
Definition: ObjectBase.h:138
引用计数智能指针
Definition: RefBasePtr.hpp:35
渲染上下文
Definition: RenderContext.h:62
文本样式
Definition: TextStyle.h:64
TextAntialiasMode
文字抗锯齿模式
Definition: RenderContext.h:40