FMX形状组件未在Android平台上正确显示

时间:2014-10-28 02:03:34

标签: android delphi graphics firemonkey

正如您所看到的,Windows平台上的形状组件正常显示,非常流畅(包括线条,角落和渐变效果)。

enter image description here

但是在Android平台上,你会得到另一个不可接受的结果:线条不再平滑,角落无法关闭,渐变变为全黑。

enter image description here

这是怎么回事?以及如何解决?

这是.fmx文件内容:

object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 480
  ClientWidth = 640
  FormFactor.Width = 320
  FormFactor.Height = 480
  FormFactor.Devices = [Desktop]
  DesignerMasterStyle = 0
  object RoundRect1: TRoundRect
    Position.X = 40.000000000000000000
    Position.Y = 16.000000000000000000
    Size.Width = 153.000000000000000000
    Size.Height = 65.000000000000000000
    Size.PlatformDefault = False
    Stroke.Color = claMediumslateblue
    Stroke.Thickness = 8.000000000000000000
  end
  object Pie1: TPie
    Position.X = 32.000000000000000000
    Position.Y = 96.000000000000000000
    Size.Width = 153.000000000000000000
    Size.Height = 129.000000000000000000
    Size.PlatformDefault = False
    Stroke.Color = claChocolate
    Stroke.Thickness = 8.000000000000000000
    EndAngle = -90.000000000000000000
  end
  object Arc1: TArc
    Position.X = 48.000000000000000000
    Position.Y = 224.000000000000000000
    Size.Width = 169.000000000000000000
    Size.Height = 161.000000000000000000
    Size.PlatformDefault = False
    Stroke.Color = claDeeppink
    Stroke.Thickness = 10.000000000000000000
    StartAngle = 30.000000000000000000
    EndAngle = 180.000000000000000000
  end
  object Arc2: TArc
    Position.X = 16.000000000000000000
    Position.Y = 184.000000000000000000
    Size.Width = 233.000000000000000000
    Size.Height = 233.000000000000000000
    Size.PlatformDefault = False
    Stroke.Kind = Gradient
    Stroke.Gradient.Points = <
      item
        Color = xFF297E72
        Offset = 0.000000000000000000
      end
      item
        Color = xFFA6F2BD
        Offset = 1.000000000000000000
      end>
    Stroke.Gradient.StartPosition.X = 0.500000000000000000
    Stroke.Gradient.StartPosition.Y = 1.000000000000000000
    Stroke.Gradient.StopPosition.X = 0.499999970197677600
    Stroke.Gradient.StopPosition.Y = 0.000000000000000000
    Stroke.Thickness = 20.000000000000000000
    Stroke.Cap = Round
    EndAngle = -90.000000000000000000
  end
end

1 个答案:

答案 0 :(得分:2)

我相信文档它说Strokes(行)上的渐变不适用于除Windows 2D渲染之外的任何东西。然而,我无法找到它所说的位置。如果您希望Windows版本使用3D,您可以执行以下操作:

initialization
FMX.Types.GlobalUseGPUCanvas := True;

您还可以按overriding the rendering parameters开启多重采样。最后,如果需要,可以使用native Android component作为原生绘图。