Delphi FMX制作渐变画笔绘制球体时触发访问违规错误求助
访问违规错误原因分析与修复方案
- 错误核心原因:你只声明了
TLine类型的变量DLine,但没有创建该类的实例。直接访问未实例化对象的属性(比如DLine.Stroke),会触发空指针访问违规。
修复后的代码示例:
var DLine : TLine; begin // 先创建TLine实例,Owner参数根据实际场景调整:如果要挂载到父控件,传入父控件对象;否则传nil DLine := TLine.Create(nil); try // 配置渐变画笔 DLine.Stroke.Thickness := 3; DLine.Stroke.Gradient.Color := $ff0000; // 红色 DLine.Stroke.Gradient.Color1 := $0000ff; // 蓝色 DLine.Stroke.Kind := TBrushKind.Gradient; DLine.Stroke.Gradient.Style := TGradientStyle.Linear; // 此处添加将DLine绘制到球体的逻辑,比如把DLine添加到球体控件的对象列表中 finally // 如果没有将DLine挂载到父控件,用完后手动释放实例;若已挂载,父控件会自动管理释放,可去掉此行 DLine.Free; end; end;
额外注意事项:
- 确认项目中已引用
TLine所在的单元:VCL项目引用Vcl.StdCtrls,FMX项目引用FMX.Objects。 - 如果
DLine需要长期存在(比如作为球体的一部分),创建时把父控件作为Owner传入,避免手动管理释放逻辑,防止内存泄漏。
内容的提问来源于stack exchange,提问作者CHRssg gg
相关产品推荐
相关产品推荐

