XFE Git
XFE Studio Git
Git 首页 全局搜索
XFE 主站 文档 NuGet

STHApplication

【MAUI】寄当家——安卓端交易管理系统

公开
关注 0 Fork 0 Star 0
UTF-8
namespace JiDangJia.Views;

public sealed class RibbonDrawable : IDrawable
{
    public void Draw(ICanvas c,RectF r)
    {
        c.StrokeSize=.65f;
        for(int i=0;i<8;i++) {c.StrokeColor=Ui.Gold.WithAlpha(.05f+i*.008f);var p=new PathF();p.MoveTo(r.Width*.3f,r.Height+40);p.CurveTo(r.Width*.76f,r.Height+i*5,r.Width*.72f,r.Height*.5f+i*5,r.Width+100,15+i*8);c.DrawPath(p);}
    }
}
public sealed class AdDrawable : IDrawable
{
    public void Draw(ICanvas c,RectF r)
    {
        c.StrokeColor=Ui.Bronze.WithAlpha(.17f);c.StrokeSize=1;
        for(int i=0;i<5;i++)c.DrawCircle(r.Width-20,r.Height/2,35+i*20);
        c.StrokeColor=Ui.Bronze.WithAlpha(.5f);c.StrokeSize=1.5f;var p=new PathF();float x=r.Width-63,y=r.Height/2;p.MoveTo(x-25,y-6);p.LineTo(x,y-25);p.LineTo(x+25,y-6);c.DrawPath(p);c.DrawRoundedRectangle(x-18,y-6,36,37,3);c.DrawLine(x-9,y+6,x+9,y+6);c.DrawLine(x-9,y+15,x+9,y+15);c.DrawLine(x,y,x,y+25);
    }
}
public sealed class IncomeDrawable(IReadOnlyList<(string label,decimal value)> data) : IDrawable
{
    public void Draw(ICanvas c,RectF r)
    {
        float baseline=r.Height-27,top=24;decimal max=Math.Max(1,data.Max(p=>p.value));c.FontSize=10;c.FontColor=Ui.Muted;c.StrokeColor=Ui.Line;c.StrokeSize=1;
        for(int i=0;i<3;i++){float y=top+i*(baseline-top)/2;c.DrawLine(0,y,r.Width,y);}
        float cell=r.Width/data.Count;
        for(int i=0;i<data.Count;i++) {float height=(float)(data[i].value/max)*(baseline-top-12),x=i*cell+cell*.25f;c.FillColor=i==data.Count-1?Ui.Bronze:Ui.Gold.WithAlpha(.45f);if(height>0)c.FillRoundedRectangle(x,baseline-height,cell*.5f,height,4);c.DrawString(data[i].label,i*cell,baseline+10,cell,16,HorizontalAlignment.Center,VerticalAlignment.Center);if(data[i].value>0)c.DrawString(data[i].value.ToString("0.##"),i*cell,baseline-height-18,cell,15,HorizontalAlignment.Center,VerticalAlignment.Center);}
        if(data.All(p=>p.value==0)) {c.FontColor=Ui.Muted;c.FontSize=12;c.DrawString("暂无收入数据",0,60,r.Width,30,HorizontalAlignment.Center,VerticalAlignment.Center);}
    }
}