处理窗口缩放

当窗口在运行时进行缩放时,PageLayoutControlMapControl不会自动改变自身的尺寸。要改变控件的尺寸以便它们总是与匹配窗口的范围,你必须将控件定在窗口上。如果PageLayoutControlMapControl包含大量的数据,在窗口缩放期间重绘这些数据显得相当重要。为了提高执行效率,你可以禁止数据重绘直到缩放操作完成后再重绘之。在缩放时,可以用一个可伸缩的位图来替代重绘数据。

1.       在设计模式显示窗体并从属性窗口中选择axPageLayoutControl1。单击Anchor属性,将axPageLayoutControl1锚定在窗体的顶、左、底和右部。

2.       锚定axMapControl控件到窗体的顶、左和底部。

3.       Form_Load事件的开头增加以下代码:

// 当缩放时禁止重绘

this.SetStyle(ControlStyles.EnableNotifyMessage, true);

4.       向类增加以下常量:

        public class Form1 : System.Windows.Forms.Form

     {

         // ……

         private const int WM_ENTERSIZEMOVE = 0x231;

private const int WM_EXITSIZEMOVE = 0x232;

  // ……

}

5.       向重载的OnNotifyMessage方法中增加下列代码:

     protected override void OnNotifyMessage(Message m)

     {

         base.OnNotifyMessage (m);

        

         // 以下为手工添加的代码

         if ( m.Msg == WM_ENTERSIZEMOVE)

         {

             axMapControl1.SuppressResizeDrawing(true, 0);

             axPageLayoutControl1.SuppressResizeDrawing(true, 0);

         }

         else if ( m.Msg == WM_EXITSIZEMOVE)

         {

             axMapControl1.SuppressResizeDrawing(false, 0);

             axPageLayoutControl1.SuppressResizeDrawing(false, 0);

         }

}

6.       生成并运行应用程序,试着缩放窗口。

注:禁止缩放时重画方法是通过检查发送到窗体的Windows消息工作的。当窗口开发缩放时,Windows发送WM_ENTERSIZEMOVE窗口消息。此时,我们禁止在MapControlPageLayoutControl上绘制图形,而是使用“stretchy bitmap”绘制。当Windows发送WM_EXITSIZEMOVE消息时,窗体结束缩放,这时我们全部重绘新的范围。  

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值