程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> Delphi >> [修正] 移動平台曲線不平滑的問題(如:TRectangle, TPath...等),trectangletpath..

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

編輯:Delphi

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


問題:從 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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved