为什么在使用CustomRenderer自定义Frame的CornerRadius属性时,为什么需要检索本机Control的背景并将其转换为GradientDrawable?我在下面添加了我的customrender代码。
private void UpdateCornerRadius()
{
if (Control.Background is GradientDrawable _gradientbackground)
{
var cornerRadius = (Element as CustomFrame)?.CornerRadius;
if (!cornerRadius.HasValue)
{
return;
}
var topLeftCorner = Context.ToPixels(cornerRadius.Value.TopLeft);
var topRightCorner = Context.ToPixels(cornerRadius.Value.TopRight);
var bottomLeftCorner = Context.ToPixels(cornerRadius.Value.BottomLeft);
var bottomRightCorner = Context.ToPixels(cornerRadius.Value.BottomRight);
var cornerRadii = new[]
{
topLeftCorner,
topLeftCorner,
topRightCorner,
topRightCorner,
bottomRightCorner,
bottomRightCorner,
bottomLeftCorner,
bottomLeftCorner,
};
_gradientbackground.SetCornerRadii(cornerRadii);
}
}
答案 0 :(得分:0)
正如“火星上的老鼠”在他的评论中提到的那样,您无需在自定义渲染器中执行此操作。 Frame control具有圆角功能。不幸的是,它缺乏对特定拐角进行倒圆的能力(例如,仅对顶部拐角进行倒圆)或对不同的拐角应用不同的倒圆半径。不过不用担心,Microsoft MVP PancakeView有一个出色的nuget程序包,称为Steven Thewissen,将为您提供帮助。通读Github文档,开始非常容易。