停止缩放 TGraphicControl 组件

Stop scaling a TGraphicControl component

这是我的组件构造函数:

constructor TDiskMap.Create(AOwner: TComponent);
begin
 inherited Create(AOwner);
 FCellSize:= 13; FCellsH:= 10; FCellsV:= 10;
 Width:= (FCellsH * FCellSize) + 1;
 Height:= (FCellsV * FCellSize) + 1;
end;

当我运行应用程序时,控件的大小不是我在构造函数中设置的大小,因为它是在之后缩放的。我想自己处理缩放并禁用此自动缩放,但 TGraphicControl 没有 Scaled 属性。我尝试挂钩 WM_SIZWWM_MINMAXINFO、使用约束...但没有效果。有任何想法吗 ? 我希望没有人可以自动调整控件的大小,除了我。我的意思是在像素级别......与 dpi 无关。

要对缩放做出反应,您需要覆盖 ChangeScale - 准确地说,它的三个参数重载。

如果您不想要控件的默认缩放行为,您应该避免在派生方法中调用 inherited 并自行处理所有必要的计算。

请注意,这仅在应用程序一开始就知道 dpi 时才有效。