CS开发框架自动缩放字体功能
作者:C/S框架网  发布日期:2011/04/26 20:59:12
  CS开发框架自动缩放字体功能

C/S框架网|www.csframework.com|CS开发框架自动缩放字体功能


CS开发框架自动缩放字体功能


为了使系统有出色的用户体验和更人性化的界面设计,关爱老人,考虑眼花近视用户群体的使用感受, CS开发框架集成了自动缩放字体的强大功能, 满足用户个性化需求。


设计方案:


1. 设计一个支持字体缩放功能的接口IZoomFont
2. 基类窗体frmBase实现IZoomFont
3. 在基类窗体的KeyDown事件处理用户按键, Ctrl+"-" 为缩小字体, Ctrl+"+" 为放大字体.
4. 基类窗体KeyPreview属性设为True

按Ctrl+"+"或"-"弹出Waiting窗体:

贴图图片


放大字体效果图:

贴图图片

缩小字体后效果图:

贴图图片


IZoomFont 接口:


C# Code:

/// <summary>
/// 支持缩放字段的功能
/// </summary>
public interface IZoomFont
{
   /// <summary>
   /// 设置控件的字体大小
   /// </summary>
   /// <param name="fontSize">字体大小</param>
   /// <param name="processChilds">是否处理子级</param>
   void DoSetFont(float fontSize, bool processChilds);
   
   /// <summary>
   /// 设置窗体内某些特殊控件的字体, Dev很多控件的字体必须在Appearance属性内设置
   /// </summary>
   /// <param name="font">缩放后的字体</param>
   void DoSetFontCustom(Font font);
   
   /// <summary>
   /// 此控件是否支持缩放功能
   /// </summary>
   /// <param name="control">当前控件</param>
   /// <returns></returns>
   bool AllowZoomFont(Control control);
}


//来源:C/S框架网(www.csframework.com) QQ:1980854898



窗体基类frmBase实现IZoomFont接口:


C# Code:

/// <summary>
/// 所有窗体基类
/// </summary>
public partial class frmBase : XtraForm, IFormBase, IZoomFont
{
   /// <summary>
   /// 标记当前窗体是否支持字体缩放, 正常情况下所有窗体都允许缩放.
   /// </summary>
   protected bool _EnableZoomFont = true;
   
   /// <summary>
   /// 按回车键自动将焦点移到下一输入框
   /// </summary>
   protected bool _EnterFocusNextControl = true;
   
   
   // ... 省略 ....
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898



IZoomFont接口的方法:


C# Code:

#region IZoomFont接口的方法

/// <summary>
/// 设置当前窗体所有控件的字段
/// </summary>
/// <param name="fontSize">新字体</param>
/// <param name="processChilds">处理所有子控件</param>
public void DoSetFont(float fontSize, bool processChilds)
{
   try
   {
      this.SuspendLayout();
      Font newFont = new Font(this.Font.FontFamily.Name, fontSize);
      ZoomFontTool.SetControlFont(this, newFont, processChilds); //设置当前窗体的字体
      this.DoSetFontCustom(newFont); //设置其它控件的字体
   }
   finally
   {
      this.ResumeLayout();
   }
}

/// <summary>
/// 是否能缩放当前控件的字体大小
/// </summary>
/// <param name="c">当前控件</param>
/// <returns></returns>
public virtual bool AllowZoomFont(Control c) { return true; }

/// <summary>
/// 设置窗体内某些特殊控件的字体, Dev很多控件的字体必须在Appearance属性内设置
/// </summary>
/// <param name="font">缩放后的字体</param>
public virtual void DoSetFontCustom(Font font) { }


#endregion

//来源:C/S框架网(www.csframework.com) QQ:1980854898



处理用户按键事件:


C# Code:


//处理用户按键事件
private void frmBase_KeyDown(object sender, KeyEventArgs e)
{
   //按Control键及+/-键调整字体大小
   if (e.Control && ((e.KeyCode == Keys.Add) || (e.KeyCode == Keys.Subtract)))
   {
      //当前窗体不允许缩放字体
      if (false == _EnableZoomFont) return;
      
      try
      {
         if (this.MdiParent != null) this.MdiParent.SuspendLayout();
         Cursor.Current = Cursors.WaitCursor;
         frmWaiting.ShowMe("正在缩放字体,请稍候......");
         Application.DoEvents();
         Thread.Sleep(50);
         ZoomFontTool.ZoomAll((e.KeyCode == Keys.Add) ? ZoomType.ZoomIn : ZoomType.ZoomOut);
      }
      finally
      {
         this.Focus();
         Cursor.Current = Cursors.Default;
         e.Handled = true;
         frmWaiting.HideMe();
         if (this.MdiParent != null) this.MdiParent.ResumeLayout();
         Application.DoEvents();
      }
   }
}

//来源:C/S框架网(www.csframework.com) QQ:1980854898



C/S框架网|原创精神.创造价值.打造精品

扫一扫加微信
C/S框架网作者微信 C/S框架网|原创作品.质量保障.竭诚为您服务


下载ZoomFontTool类及frmWaiting窗体源码:

点击下载附件 点击下载附件 (如下载失败,请邮件通知我们寄回给您,或QQ:23404761留言.)
上一篇 下一篇