TScaledLayoutを使用すると謎の線が描画されてしまいます

解決


Moe  2023-11-17 00:17:08  No: 151276

お世話になります。
Delphi11.3でFMXアプリケーションを開発しております。
TScaledLayoutを使用すると、どんな解像度?でも同じに見える様になるのが素敵なので、これを採用してみたいと思っています。
ですが、TScaledLayoutを使用した際に、TEditなどの入力域の内側に謎の線が描画されてしまいます。他のコントロールでも同様の現象が発生し、少し見難くなってしまいます(イメージをお伝えできないのが残念ですが)。
TScaledLayoutを使用しなければ普通に描画されるので、これはやはりTScaledLayoutの問題なのでしょうか?
因みに、スタイルは、CoralDark.Win.styleやEmeraldDark.Win.styleをGetItでダウンロードしたものを使用させて頂いております。


mam  2023-11-17 10:35:44  No: 151277

Delphi XE10.2 Tokyoですが謎現象が発生しました。
PCに拠るのかもですが、私の場合はDirect2Dを使用しないようにすればでなくなりました。
GPUキャンバスを使っても謎現象は発生しなくなりますが、
  FMX.Types.GlobalUseGPUCanvas:=True;
文字が汚くなりました。
「.end」の手前に以下を入れるのは如何でしょうか。

initialization
begin
  //True:Direct2Dを利用する、False:GDI+を使う
  FMX.Types.GlobalUseDirect2D:=False;
end;

end.


Moe  2023-11-17 12:29:27  No: 151278

mam さん
アドバイス頂きました通りFMX.Types.GlobalUseDirect2D:=False;を指定する事で、各コントロールの内部に謎の線が表示されなくなりました。
実は、TEditなどのコントロールのカスタムスタイル編集で、FocusedLinkなどに表示される内側の線を外側に移動してみたりと色々試していましたが、全くの検討外れでした(汗。
これで迷いなくTScaledLayoutを使用することができます。
貴重なお時間で再現頂き、解決方法までご提示頂き、有難うございました。


ファッショニスタ大仏  2023-11-17 12:36:51  No: 151279

使ってないのでよくわかっていませんが、これと同じような症状なんでしょうかね?
https://stackoverflow.com/questions/33529842/painting-issues-with-tscaledlayout-custom-styles

翻訳で以下のコメントついてますね
> これは D2D の問題であると思われることがわかりました。
> GDI+ (FMX.Types.GlobalUseDirect2D := false) を強制的に使用すると、正常に動作します。
> ただし、これは D2D の利点をすべて犠牲にするため、明らかにあまり良い解決策ではありません。

mamさんと同じ解決策のようです。


Moe  2023-11-17 14:05:05  No: 151280

ファッショニスタ大仏 さん
はい、掲載頂きました事象と同じです。
既知の問題だったのですね。。。
Delphi12にバージョンアップして治る事を期待していますが、問題が大きそうなので難しいのでしょうね。。。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加