我有一个TPaintBox
控件并将其分配TPaintBox->Canvas->Brush->Bitmap
给一个准备好的TBitmap
网格图案。是客户端在TPaintBox
其父级 ( Form
) 内对齐。
当我手动调用TPaintBox->Invalidate()
重绘控件时,画笔在左上角(0,0 - 左图)完美对齐,但是一旦我调整窗口大小,画笔偏移量就会变为(20,7 - 右图),直到我手动再打电话TPaintBox->Invalidate()
。
我曾尝试使用一种标准画笔模式,例如bsBDiagonal
and bsCross
,但它们的行为都相同(Invalidate()
调用和form
调整大小之间的对齐方式不同)。
我尝试使用 Win32 APISetBrushOrgEx()
手动设置画笔对齐,但它对窗口调整大小更新没有影响。如果我手动调用它确实工作得很好Invalidate()
。
如果我在onPaint
处理程序中设置断点并检查画笔 origo 是什么,即使未对齐,它也总是回答 (0,0)。
我Canvas->RectFill()
用来填充背景。
Canvas->Brush->Style = bsBDiagonal;
Canvas->FillRect(Client);
有任何想法吗?