【问题标题】:Issues drawing the stroke of shapes on platform Android在 Android 平台上绘制形状笔划的问题
【发布时间】:2022-01-08 09:51:30
【问题描述】:

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

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

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

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

由于我是新手,我很难评估这个问题。这是 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 firemonkey delphi-11-alexandria


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    晚了,但我是这里的新手。我很久以前就遇到过这个问题,并使用 RadiantShapes.TRadiantRectangle 而不是 TRectangle。 另一种解决方案是使用 TPath (FMX.Objects one)

    【讨论】:

      猜你喜欢
      • 2017-03-03
      • 2014-09-02
      • 1970-01-01
      • 1970-01-01
      • 2011-08-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多