CS开发框架自动缩放字体功能
CS开发框架自动缩放字体功能
CS开发框架自动缩放字体功能
扫一扫加微信
下载ZoomFontTool类及frmWaiting窗体源码:
为了使系统有出色的用户体验和更人性化的界面设计,关爱老人,考虑眼花近视用户群体的使用感受, 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
/// <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
/// <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
#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
//处理用户按键事件
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
扫一扫加微信
下载ZoomFontTool类及frmWaiting窗体源码:
版权声明:本文为开发框架文库发布内容,转载请附上原文出处连接
NewDoc C/S框架网