XamForms.Controls.Calendar特殊日期文本模糊

时间:2019-01-07 07:41:10

标签: ios xamarin.forms xamarin.ios

我在Xamarin.Forms项目中使用XamForms.Controls.Calendar,一切正常,但是在SpeacialDates属性的“文本”部分中输入的文本在iOS平台上显得模糊,如何解决? / p>

DrawText功能ios也有相同的方法,尽管对此功能的深入研究无法解决模糊问题

https://imgur.com/a/E0UZnD9“截屏”

   protected void DrawText(CGContext g, Pattern p, CGRect r)
    {
        if (string.IsNullOrEmpty(p.Text)) return;//Copperplate-Light" KohinoorTelugu-Light
        string fontname = Device.Idiom == TargetIdiom.Tablet ? "KohinoorTelugu-Light" : "GillSans-UltraBold";//GillSans-UltraBold
        var bounds = p.Text.StringSize(UIFont.FromName(fontname, p.TextSize));
        //"GillSans-UltraBold
        var al = (int)p.TextAlign;
        var x = r.X;
        if ((al & 2) == 2) // center
        {
            x = r.X + (int)Math.Round(r.Width / 2.0) - (int)Math.Round(bounds.Width / 2.0);
        }
        else if ((al & 4) == 4) // right
        {
            x = (r.X + r.Width) - bounds.Width - 2;
        }
        var y = r.Y + (int)Math.Round(bounds.Height / 2.0) + 2;
        if ((al & 16) == 16) // middle
        {
            y = r.Y + (int)Math.Ceiling(r.Height / 2.0) + (int)Math.Round(bounds.Height / 5.0);
        }
        else if ((al & 32) == 32) // bottom
        {
            y = (r.Y + r.Height) - 2;
        }
        g.SaveState();

        g.SetShouldAntialias(true);
        g.SetShouldSmoothFonts(true);
        g.SetAllowsFontSmoothing(true);
        g.SetAllowsAntialiasing(true);
        g.SetShouldSubpixelPositionFonts(false);
        g.InterpolationQuality = CGInterpolationQuality.High;
        g.SetAllowsSubpixelPositioning(false);
        g.SetAllowsFontSubpixelQuantization(false);
        g.InterpolationQuality = CGInterpolationQuality.High;


        g.TranslateCTM(0, Bounds.Height);
        g.ScaleCTM(1, -1);
        g.SetStrokeColor(p.TextColor.ToCGColor());
        g.DrawPath(CGPathDrawingMode.EOFillStroke);
        g.SetFillColor(p.TextColor.ToCGColor());
        g.SetTextDrawingMode(CGTextDrawingMode.FillStrokeClip);
        g.SelectFont(fontname, p.TextSize, CGTextEncoding.MacRoman);
        g.ShowTextAtPoint(x, Bounds.Height - y, p.Text);
        g.RestoreState();
    }
}

0 个答案:

没有答案