0

我有一个TPaintBox控件并将其分配TPaintBox->Canvas->Brush->Bitmap给一个准备好的TBitmap网格图案。是客户端在TPaintBox其父级 ( Form) 内对齐。

当我手动调用TPaintBox->Invalidate()重绘控件时,画笔在左上角(0,0 - 左图)完美对齐,但是一旦我调整窗口大小,画笔偏移量就会变为(20,7 - 右图),直到我手动再打电话TPaintBox->Invalidate()

在此处输入图像描述

我曾尝试使用一种标准画笔模式,例如bsBDiagonaland bsCross,但它们的行为都相同(Invalidate()调用和form调整大小之间的对齐方式不同)。

我尝试使用 Win32 APISetBrushOrgEx()手动设置画笔对齐,但它对窗口调整大小更新没有影响。如果我手动调用它确实工作得很好Invalidate()

如果我在onPaint处理程序中设置断点并检查画笔 origo 是什么,即使未对齐,它也总是回答 (0,0)。

Canvas->RectFill()用来填充背景。

Canvas->Brush->Style = bsBDiagonal;
Canvas->FillRect(Client);

有任何想法吗?

4

0 回答 0