[修正] 移動平台曲線不平滑的問題(如:TRectangle, TPath...等)


問題:從 XE4 以來,Firemonkey 曲線繪圖在移動平台不平滑的問題一直令人詬病,提交到官方的 QC 也是族繁不及備載,官方似乎有意的避開這個問題,遲遲沒有修正。

適用版本:XE4 ~ Berlin 10.1 update 1 (查過官方源碼從 XE4 開始有 FMX.StrokeBuilder)

修正方法:

請將源碼 FMX.StrokeBuilder.pas 復制到自己的工程目錄里,再進行修改。

unit FMX.StrokeBuilder;

interface

...略...

{+++>}var GlobeStrokeStepSize: Single = 1; // 全局變量:曲線平滑度(像素)by Aone @ 2016.10.12

implementation

...略...

procedure TStrokeBuilder.BuildSolidPolygon(const Points: TPolygon; const Opacity: Single; BreakAtEnd: Boolean);

...略...

{---> 刪除代碼下面三行代碼 by Aone @ 2016.10.12
  StepSize := FThickness; // 曲線精密度,設定為前線寬(如果線越寬,畫出來的曲線就越粗糙)
  if StepSize < 2 then // 防止曲線精密度小於2
    StepSize := 2;
<---}
{+++>}StepSize := GlobeStrokeStepSize; // 全局變量:曲線平滑度(像素)by Aone @ 2016.10.12

...略...

end;

  

效果:

例子下載(包含 Berlin 10.1.1 修正檔):

[修正]FMX_曲線平滑度_Berlin_10.1.1_Aone.zip

 

效能問題:

實機測試並沒有多大差別,應該說感覺不出來(除非一次大量繪制粗線條曲線才會有感覺)。

 

官方相關 QC 列舉幾個:

https://quality.embarcadero.com/browse/RSP-15819
https://quality.embarcadero.com/browse/RSP-15649
https://quality.embarcadero.com/browse/RSP-15709
https://quality.embarcadero.com/browse/RSP-15788
https://quality.embarcadero.com/browse/RSP-15649

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM