我对 TImage 组件的宽度和高度属性有一个相当奇怪的问题。作为测试,我通过获取 TImage 宽度和高度的中点并在此处绘制点以使其居中(centerPoint2D 是 TPoint)在 TImage 组件的中心(应该是)绘制一个红点:
// The center point is the center of the display area.
centerPoint2D.X := Trunc(Image1.Width / 2);
centerPoint2D.Y := Trunc(Image1.Height / 2);
Image1.Canvas.Brush.Color := clRed;
Image1.Canvas.Brush.Style := bsSolid;
Image1.Canvas.Ellipse(centerPoint2D.X - 5, centerPoint2D.Y - 5, centerPoint2D.X + 5, centerPoint2D.Y + 5);
红点没有出现在 TImage 的中心,而是出现在其下方和右侧的某个位置。此外,我打印到组件的任何文本都会出现拉伸。就好像 TImage 比报告的尺寸大得多,比从明显视口可见的要大,就好像可见的东西被剪裁了一样。
额外细节。TImage 控件位于 TPanel 上,该 TPanel 位于 TFrame 上的 TGroupBox 上。但是,所有这些组件的 Align 属性都设置为 alClient。TFrame 本身的 Align 属性设置为 alNone。但是,位于 Form 上的实例在设计时将其 Align 属性设置为 alClient。换句话说,它不应该是 TImage 组件大于它在运行时可见的部分的情况。此外,报告的尺寸确实与我眼中显示在屏幕上的组件大小相匹配,但我没有“像素标尺”实用程序来客观地确认这一点。