停止缩放 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_SIZW
、WM_MINMAXINFO
、使用约束...但没有效果。有任何想法吗 ?
我希望没有人可以自动调整控件的大小,除了我。我的意思是在像素级别......与 dpi 无关。
要对缩放做出反应,您需要覆盖 ChangeScale
- 准确地说,它的三个参数重载。
如果您不想要控件的默认缩放行为,您应该避免在派生方法中调用 inherited
并自行处理所有必要的计算。
请注意,这仅在应用程序一开始就知道 dpi 时才有效。
这是我的组件构造函数:
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_SIZW
、WM_MINMAXINFO
、使用约束...但没有效果。有任何想法吗 ?
我希望没有人可以自动调整控件的大小,除了我。我的意思是在像素级别......与 dpi 无关。
要对缩放做出反应,您需要覆盖 ChangeScale
- 准确地说,它的三个参数重载。
如果您不想要控件的默认缩放行为,您应该避免在派生方法中调用 inherited
并自行处理所有必要的计算。
请注意,这仅在应用程序一开始就知道 dpi 时才有效。