Delphi Android上的Firemonkey渐变颜色
我遇到了一个相当有趣的问题。我有一张表格,它的Delphi Android上的Firemonkey渐变颜色,delphi,firemonkey-fm3,delphi-xe8,Delphi,Firemonkey Fm3,Delphi Xe8,我遇到了一个相当有趣的问题。我有一张表格,它的填充设置为渐变 在Windows、IOS和OSX上,渐变是按原样绘制的。但在Android上,颜色是错误的。有什么想法吗 object Form1: TForm1 Left = 0 Top = 0 Caption = 'Form1' ClientHeight = 480 ClientWidth = 640 Fill.Kind = Gradient Fill.Gradient.Points = < item
填充设置为渐变
在Windows、IOS和OSX上,渐变是按原样绘制的。但在Android上,颜色是错误的。有什么想法吗
object Form1: TForm1
Left = 0
Top = 0
Caption = 'Form1'
ClientHeight = 480
ClientWidth = 640
Fill.Kind = Gradient
Fill.Gradient.Points = <
item
Color = xFFFFC600
Offset = 0.000000000000000000
end
item
Color = xFFFFF100
Offset = 1.000000000000000000
end>
Fill.Gradient.StartPosition.Y = 0.500000000000000000
Fill.Gradient.StopPosition.X = 1.000000000000000000
Fill.Gradient.StopPosition.Y = 0.500000000000000000
FormFactor.Width = 320
FormFactor.Height = 480
FormFactor.Devices = [Desktop]
DesignerMasterStyle = 0
object Button1: TButton
Position.X = 8.000000000000000000
Position.Y = 8.000000000000000000
TabOrder = 0
Text = 'Button1'
end
end
对象格式1:t格式1
左=0
Top=0
标题='Form1'
ClientHeight=480
ClientWidth=640
填充。种类=渐变
Fill.Gradient.Points=<
项目
颜色=xFFFFC600
偏移量=0.000000000000000000000000
结束
项目
颜色=xffff100
偏移量=1.000000000000000000000000
结束>
填充.梯度.起始位置.Y=0.500000000000000000
Fill.Gradient.StopPosition.X=1.000000000000000000
填充.梯度.停止位置.Y=0.500000000000000000
FormFactor.Width=320
FormFactor.Height=480
FormFactor.Devices=[桌面]
DesignerMasterStyle=0
对象按钮1:t按钮
位置X=8.000000000000000000000000
位置Y=8.000000000000000000000000
TabOrder=0
Text='Button1'
结束
结束
窗口:
OSX:
IOS:
安卓:
您使用的是Delphi,对吗?因为,我从未见过在基于Pascal的语言中使用这种语法,也无法让您的代码在Delphi10下运行。它是由代码生成器创建的吗
然而,我已经用Delphi 10西雅图和Firemonkey写下了你想要得到的梯度。
它在每台设备上都能正常工作,外观也一样,即使在Android上:
procedure TForm1.FormPaint(Sender: TObject; Canvas: TCanvas;
const ARect: TRectF);
var
locGradient: TGradient;
begin
with Canvas do begin
BeginScene;
// Create and initialize the gradient object
locGradient := TGradient.Create;
with locGradient do begin
Color := $FFFFC600;
Color1 := $FFFFF100;
StartPosition .Y := 0.5;
StopPosition .X := 1;
StopPosition .Y := 0.5;
end;
// Assign the created gradient object to the fill property of the canvas
with Fill do begin
Kind := TBrushKind.Gradient;
Gradient := locGradient;
end;
// Create a rectangle which represents the gradient
FillRect( ARect, 0, 0, AllCorners, 1.0 );
EndScene;
end;
FreeAndNIL( locGradient );
end;
这并不一定能回答您的问题,即为什么只有使用您的代码,您的颜色值才会在Android上出现混乱,但是,您的代码似乎没有遵循常见的Delphi语法约定。这是我表单的源代码。你不应该写一行代码。。。只要打开你的表格文件,用我提供的东西替换它,啊,我明白了。这很有启发性!我已经让您的代码按照您解释的方式运行,在Delphi10和Delphi XE8下。在我这方面效果很好-颜色在我的Android设备上显示正确。我使用的是运行安卓5.0.2的摩托罗拉G第二代。我的Delphi XE 8 Android SDK配置为使用Android SDK 24.0.2 32位。您使用的是什么Android和Android SDK版本?@Renpai。你真的从来没有看过.dfm代码吗!?你用Delphi编程多久了?