0

我是使用 Delphi 11 和 FMX 框架开发 Android 应用程序的新手。

我想使用带框架的矩形作为面板的样式,并想知道如何在 Android 平台上绘制带圆角和其他形状的矩形框架(见图)。在 Windows 上,一切都按预期工作。对于填充,到目前为止,我还没有在 Android 上找到任何绘图错误。

对于矩形,角会变形,框架有时不会闭合。

通常,对于所有形状 ( TCircle, TArc),不会为框架绘制渐变,并且绘制时不会进行抗锯齿处理。

由于我是新手,我很难评估这个问题。这是 FMX 框架的一个已知且无法解决的问题吗?还是这是 Delphi 11 的特殊问题?是否还有其他绘图问题,尤其是在 Android 上?

有没有在Android下绘制圆角矩形的替代方法?我在这里只能想到位图。

如果有经验的 Delphi FMX 开发人员能就此主题发表一些意见,我将不胜感激。

使用 Delphi 11 创建一个新的空白多设备 FMX 应用程序。将 TRectangle 拖到窗体上。将以下代码粘贴到表单中:

procedure TForm13.FormCreate(Sender: TObject);
begin
  Rectangle.Fill.Kind:=TBrushKind.None;
  Rectangle.XRadius:=10;
  Rectangle.YRadius:=10;
  Rectangle.Stroke.Kind:=TBrushKind.Gradient;
  Rectangle.Stroke.Thickness:=10;
  Rectangle.Stroke.Gradient.Color:=TAlphaColors.Black;
  Rectangle.Stroke.Gradient.Color1:=TAlphaColors.White;
end;

在 Windows 平台和 Android 平板电脑上启动应用程序。在两个系统上截取屏幕截图。为什么图形表示不同?

Android/Windows 比较

4

1 回答 1

0

从 Delphi 11 开始,Android 不支持描边中的渐变画笔。这不是 Embarcadero 的官方声明,但可以通过浏览负责在 Android 上渲染形状的源代码来观察。通过查看FMX.StrokeBuilder.pas您会发现没有使用的Gradient属性,Brush它始终使用纯色。这在 Embarcadero 官方错误跟踪器上报告,但似乎没有足够的需求来修复/实施此问题。

至于变形的圆角,这是 FMX 如何在 Android 上渲染曲线的另一个问题。这也已经被报告并正在等待解决方案。

于 2022-01-13T20:09:36.753 回答