自定义绘制FMX控件位置错误

轻松地

我最近开始将应用程序转换为FireMonkey,并从简单的控件开始。由于某种原因,与诸如TPanel或TButton之类的表单上放置的组件相比,它们的位置不正确。从我的测试来看,位置似乎翻了一番。

我的测试项目很简单:(在Delphi XE5中)

  • 创建一个新的firemonkey HD应用程序
  • 在位置(100,100)的窗体上放置一个面板,右键单击它,然后“发送回”
  • 为自定义组件粘贴以下代码(在需要时使用适配器名称)

代码:

type
  TTest = class(TPaintBox)
  private
    FBitmap: TBitmap;
  public
    Constructor Create(AOwner:TComponent); override;
    Destructor Destroy; override;
    procedure Paint; override;
  end;

{ TTest }

constructor TTest.Create(AOwner: TComponent);
begin
  inherited;
  FBitmap := TBitmap.Create;
  FBitmap.LoadFromFile('c:\test.png');
  Width := FBitmap.Width;
  Height := FBitmap.Height;
end;

destructor TTest.Destroy;
begin
  FreeAndNil(FBitmap);
  inherited;
end;

procedure TTest.Paint;
begin
  Canvas.DrawBitmap(FBitmap,
     TRectf.Create(0, 0, FBitmap.Width, FBitmap.Height),
     AbsoluteRect,
     1);
end;
  • 粘贴以下代码以动态创建上述组件

代码:

procedure TForm2.FormCreate(Sender: TObject);
var t: TTest;
begin
  t := TTest.Create(self);
  t.Parent := self;
  t.Position.X := 50;
  t.Position.Y := 50;
end;

为Win32构建它。

在我的末端,图像出现在面板的左上角,它位于100,100,但控件显然已设置为将自身定位为50,50

调试显示正确的位置和矩形值。

我不知道发生了什么事。也许有人有一些建议/解释。

谢谢。

恩妮

AbsoluteRect相对于控件的Form的矩形。如果要绘制某些东西,则必须使用局部坐标,在这种情况下为LocalRect

Canvas.DrawBitmap(FBitmap, TRectf.Create(0, 0, FBitmap.Width, FBitmap.Height), LocalRect, 1);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

单张自定义控件位置:居中

来自分类Dev

在已经绘制的自定义控件上绘制

来自分类Dev

在自定义WPF控件中强制重新绘制自定义绘制的UIElement

来自分类Dev

C#-在自定义位置显示与Winforms控件关联的错误图标

来自分类Dev

C#-在自定义位置显示与Winforms控件关联的错误图标

来自分类Dev

如何绘制自定义控件,然后传播事件?

来自分类Dev

JavaFX-如何创建简单的自定义绘制控件?

来自分类Dev

Win32自定义绘制树视图控件

来自分类Dev

在WTL中的自定义绘制控件中实现滚动

来自分类Dev

自定义控件未绘制Windows窗体按钮

来自分类Dev

自定义cursoradapter错误位置

来自分类Dev

自定义错误消息和位置

来自分类Dev

自定义cursoradapter错误位置

来自分类Dev

Prestashop 自定义模块位置错误

来自分类Dev

自定义控件与OpenLayers 3的相对位置

来自分类Dev

设置自定义滑块控件(CSS)的位置

来自分类Dev

TStringGrid的FMX自定义标题

来自分类Dev

使用自定义控件避免XAML Designer错误

来自分类Dev

createDefaultSkin()在JavaFX自定义控件中返回null错误

来自分类Dev

使用自定义控件避免XAML Designer错误

来自分类Dev

VB自定义控件无法在预设空间之外绘制,无法绘制

来自分类Dev

DataGridTemplateColumn的自定义控件

来自分类Dev

自定义gui控件

来自分类Dev

指令自定义控件

来自分类Dev

自定义控件Android

来自分类Dev

自定义视图:画布绘制方法给出API错误

来自分类Dev

WPF:自定义控件属性已被另一个自定义控件错误注册

来自分类Dev

绘制自定义组件

来自分类Dev

如何在.Net WinForms控件上绘制自定义边框