[修复] Firemonkey 使用 DrawPath 断线问题(Android & iOS 平台)
2024-10-14 15:08:25
问题:使用 Canvas.DrawPath 绘制时,最后一点无法画到终点位置。(这个问题要在粗线才能察觉)
适用:Delphi 10 Seattle (或更早的版本) for Android & iOS
修复方法:
请将源码 FMX.StrokeBuilder.pas 复制到自己的工程目录里,再进行修改。
procedure TStrokeBuilder.BuildSolidPolygon(const Points: TPolygon; const Opacity: Single; BreakAtEnd: Boolean); ...略... while CurIndex < Length(Points) do
begin
if (CurIndex >= Length(Points) - ) and BreakAtEnd and (Points[] <> Points[Length(Points) - ]) then
{--->删除这行 Break;}
{+++>新增代码}
// 修复曲线最后一点断线的问题 by Aone (2016/03/25)
begin
PieceDirVec := (DestPos - SrcPos).Normalize;
ThickPerp := TPointF.Create(-PieceDirVec.Y, PieceDirVec.X) * FHalfThickness; InsertVertex(DestPos - ThickPerp, FStrokeColor);
InsertVertex(DestPos + ThickPerp, FStrokeColor); if PrevVerticesPlaced then
begin
InsertIndex(FCurrentVertex - );
InsertIndex(FCurrentVertex - );
InsertIndex(FCurrentVertex - ); InsertIndex(FCurrentVertex - );
InsertIndex(FCurrentVertex - );
InsertIndex(FCurrentVertex - );
end; Break;
end;
{<+++} ...略... end;
效果:
官方有人提交 QC 了:
RSP-14309: [iOS & Android] Delphi 10.1 Berlin - drawing problems
https://quality.embarcadero.com/browse/RSP-14309
最新文章
- J2EE,J2SE,J2ME,JDK,SDK,JRE,JVM区别
- C++的XML编程经验――LIBXML2库使用指南[转]
- db4o官方停止支持及面向对象数据库的一些感想
- [置顶] What is the difference between Category and Class Extension?
- docker- 构建 oracle2c-r2(12.2.0.1) 的镜像
- Unity 发布的 WenGL 使用SendMessage传递多个参数
- JavaScript八张思维导图—字符串用法
- 使用Google Cloud Platform构建机器学习项目-宠物识别
- Ubuntu下useradd与adduser区别
- 非常完善的两个微服务框架比较(SpringCloud与Dubbo)
- SpringBoot使用缓存
- 自然语言处理hanlp的入门基础
- 【六】注入框架RoboGuice使用:(Singletons And ContextSingletons)
- docx4j基本操作
- 自行申请德国的VAT号码?
- Java - 复合模式优于继承
- 009---linux进程管理
- bzoj 1734: [Usaco2005 feb]Aggressive cows 愤怒的牛
- C语言 返回指针的函数
- Javascript中==和===的区别