Цвет градиента огненной обезьяны на Android
Я столкнулся с довольно забавной проблемой. У меня есть форма с его Fill
установлен в Gradient
,
В 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
Окна:
OSX:
IOS:
Android:
1 ответ
Вы используете Delphi, верно? Потому что я никогда не видел этот синтаксис, используемый в языке, основанном на Pascal, и не смог заставить ваш код работать под Delphi 10 Seattle. Был ли он создан генератором кода?
Однако я написал градиент, который вы пытались получить с помощью Delphi 10 Seattle и 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.