【发布时间】:2018-07-20 15:17:35
【问题描述】:
我觉得自己很愚蠢,但我找不到一个我认为很容易解决的问题。
我有一个用户控件(基本上)显示在 onPaint 阶段绘制它的图像:
protected override void OnPaint(PaintEventArgs e)
{
if (img != null)
e.Graphics.DrawImage(img, ...);
}
当用户控件调整大小时,它必须执行许多操作,其中一个是(给定特定条件)调整图像大小以适应宽度或高度等...
显示的图像可能很“重”,因此当用户开始调整大小并移动鼠标时,结果是一种缓慢移动,对最终用户不利。
所以我想知道是否有 Windows 消息报告我调整大小操作正在开始或完成:如果是这样,我可以在调整大小开始时停止重绘并在调整大小结束时重新绘制图像。
谢谢大家
已编辑:
我试过这个:
protected override void WndProc(ref Message m)
{
const int WM_ENTERSIZEMOVE = 0x0231;
const int WM_EXITSIZEMOVE = 0x0232;
switch (m.Msg)
{
case WM_ENTERSIZEMOVE: resizing = true; break;
case WM_EXITSIZEMOVE: resizing = false; break;
}
}
但这些消息永远不会被调用:(
【问题讨论】:
-
我可以假设您的控件已调整大小,因为它停靠在正在调整大小的面板或表单上吗?
-
@hometoast: 是的,但我不控制容器形式...我的控制将被其他人使用...