Skip to content

Commit

Permalink
可以绘制出内容
Browse files Browse the repository at this point in the history
  • Loading branch information
lindexi committed Oct 13, 2024
1 parent ed5b2e0 commit f602ecf
Showing 1 changed file with 22 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,25 +4,39 @@

using SkiaSharp;

using System.Collections.Generic;
using LightTextEditorPlus.Core.Primitive;

namespace LightTextEditorPlus.Rendering;

class RenderManager: IRenderManager, ITextEditorSkiaRender
class RenderManager : IRenderManager, ITextEditorSkiaRender
{
record SkiaTextRenderInfo();
record SkiaTextRenderInfo(string Text, float X, float Y, IReadOnlyRunProperty RunProperty);

private List<SkiaTextRenderInfo>? RenderInfoList { set; get; }

public void Render(RenderInfoProvider renderInfoProvider)
{

var list = new List<SkiaTextRenderInfo>();

foreach (ParagraphRenderInfo paragraphRenderInfo in renderInfoProvider.GetParagraphRenderInfoList())
{
foreach (ParagraphLineRenderInfo lineInfo in paragraphRenderInfo.GetLineRenderInfoList())
{
// 先不考虑缓存
LineDrawingArgument argument = lineInfo.Argument;
foreach (CharData charData in argument.CharList)
{
Point startPoint = charData.GetStartPoint();
float x = (float) startPoint.X;
float y = (float) startPoint.Y;
var skiaTextRenderInfo = new SkiaTextRenderInfo(charData.ToString(), x, y, charData.RunProperty);
list.Add(skiaTextRenderInfo);
}
}
}

RenderInfoList = list;
}

public void Render(SKCanvas canvas)
Expand All @@ -32,9 +46,13 @@ public void Render(SKCanvas canvas)
return;
}

using SKPaint skPaint = new SKPaint();
skPaint.Typeface = SKTypeface.FromFamilyName("微软雅黑");

foreach (SkiaTextRenderInfo skiaTextRenderInfo in RenderInfoList)
{

skPaint.TextSize = (float) skiaTextRenderInfo.RunProperty.FontSize;
canvas.DrawText(skiaTextRenderInfo.Text,new SKPoint(skiaTextRenderInfo.X, skiaTextRenderInfo.Y+ skPaint.TextSize),skPaint);
}
}
}

0 comments on commit f602ecf

Please sign in to comment.