線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1827
推到 Plurk!
推到 Facebook!

FireMonkey DrawLine & FillPath BUG ?

缺席
mainchen2
一般會員


發表:3
回覆:16
積分:3
註冊:2006-07-14

發送簡訊給我
#1 引用回覆 回覆 發表時間:2012-09-27 08:59:01 IP:112.104.xxx.xxx 訂閱
目前發現直線某些斜度 Mac 不會顯示虛線及Mac 下 Path 無法顯示互斥效果, 這是正常的嗎?
以下程式在 Windows 是可以正常顯示的!

procedure TForm1.LinePaintBoxPaint(Sender: TObject; Canvas: TCanvas);
begin
with Canvas do
begin
BeginScene;
Stroke.Thickness := 5;
Stroke.Color := claRed;
Stroke.Dash := TStrokeDash.sdDot;
DrawLine(PointF(126, 10), PointF(200, 280), 1);
EndScene;
end;
end;
procedure TForm1.PathPaintBoxPaint(Sender: TObject; Canvas: TCanvas);
var R: TRectF;
Path: TPathData;
begin
with Canvas do
begin
BeginScene;
R := PathPaintBox.BoundsRect;
InflateRect(R, -R.Width * 0.2, -R.Height * 0.2);
Path := TPathData.Create;
try
Path.AddRectangle(R, 0, 0, []);
InflateRect(R, -R.Width * 0.2, -R.Height * 0.2);
Path.AddEllipse(R);
FillPath(Path, 1);
finally
Path.Free;
end;
EndScene;
end;
end;
附加檔案:5063a4d560c87_Mac.png
編輯記錄
mainchen2 重新編輯於 2012-09-26 19:01:55, 註解 無‧
mainchen2 重新編輯於 2012-09-26 19:03:13, 註解 無‧
mainchen2 重新編輯於 2012-09-26 19:04:00, 註解 無‧
mainchen2 重新編輯於 2012-09-26 19:05:02, 註解 無‧
mainchen2
一般會員


發表:3
回覆:16
積分:3
註冊:2006-07-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2012-09-30 16:06:05 IP:112.104.xxx.xxx 訂閱
 找到問題, 修正方法如下:

直線修正方法:
  1. 開啟原始程式: FMX.Canvas.Mac
  2. 找到: procedure TCanvasQuartz.DoDrawLine(const APt1, APt2: TPointF; const AOpacity: single; const ABrush: TStrokeBrush);
  3. 將此行刪除: CGContextClosePath(Context);
  4. 說明: 畫線不需要將 Path Close 否則會迼成, 第 2 點再畫回原點.
Path 無法顯示互斥效果修正:
  1. 開啟原始程式: FMX.Canvas.Mac
  2. 找到: procedure TCanvasQuartz.DoFillPath(const APath: TPathData; const AOpacity: single; const ABrush: TBrush);
  3. 將 CGContextFillPath 改成 CGContextEOFillPath
  4. 說明: CGContextEOFillPath 才能顯示互斥效果.
以上修正都需要修改到 Firemonkey 原始碼, 可將 FMX.Canvas.Mac 複製到你的專案下面再修改即可.


mainchen2
一般會員


發表:3
回覆:16
積分:3
註冊:2006-07-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2013-03-16 17:13:58 IP:122.116.xxx.xxx 訂閱
這些問題,終於在 XE3.5 中被修正了。
系統時間:2017-12-15 18:07:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!