C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon

1.使用XtraMessageBoxForm,自定义Icon

2.重写XtraMessageBoxForm,自定义消息字体,标题字体

3.注册XtraMessageBoxForm的Showing事件,自定义按钮字体及按钮大小

具体代码如下,只写了简单两种方法,可自己扩展,赋值MessageBoxIcon可以显示想要的Icon

    public static class UIMessageBox
    {
        static UIMessageBox()
        {
            MessageBoxForm.MessageBoxFont = new Font("Arial", 14F); //定义字体类型
        }

        static readonly Icon MessageBoxIcon = null;

        public static void Show(string message)
        {
            ShowInternal(null, message, "Notice", SystemIcons.Information, DialogResult.OK);
        }

        public static void Show(Control owner, string message)
        {
            ShowInternal(owner, message, "Notice", SystemIcons.Information, DialogResult.OK);
        }

        private static DialogResult ShowInternal(Control owner, string message, string caption, Icon messageIcon, params DialogResult[] dialogResults)
        {
            MessageBoxForm form = new MessageBoxForm();
            form.Icon = MessageBoxIcon;
            XtraMessageBoxArgs args = new XtraMessageBoxArgs(owner, message, caption, dialogResults, messageIcon, 0);
            args.Showing += Args_Showing;
            return form.ShowMessageBoxDialog(args);
        }

        private static void Args_Showing(object sender, XtraMessageShowingArgs e)
        {
            MessageButtonCollection buttons = e.Buttons as MessageButtonCollection;
            SimpleButton btn = null;
            foreach (var dialog in (DialogResult[])Enum.GetValues(typeof(DialogResult)))
            {
                btn = buttons[dialog] as SimpleButton;
                if (btn != null)
                {
                    btn.Size = new Size(Convert.ToInt32(btn.Width * 1.2), Convert.ToInt32(btn.Height * 1.2)); //按钮大小
                    btn.Font = e.Form.Font; //按钮字体
                }
            }
        }
    }

    internal class MessageBoxForm : XtraMessageBoxForm
    {
        internal static Font MessageBoxFont = new Font("Arial", 10F);

        public MessageBoxForm()
        {
            Appearance.Font = MessageBoxFont;
        }

        protected override FormPainter CreateFormBorderPainter()
        {
            return new MessageBoxFormPainter(this, LookAndFeel);
        }
    }

    internal class MessageBoxFormPainter : FormPainter
    {
        internal MessageBoxFormPainter(Control owner, ISkinProvider provider) : base(owner, provider) { }

        protected override void DrawText(GraphicsCache cache)
        {
            string text = Text;
            if (text == null || text.Length == 0 || TextBounds.IsEmpty)
                return;
            AppearanceObject appearance = new AppearanceObject(GetDefaultAppearance());
            appearance.Font = Owner.Font;
            appearance.TextOptions.Trimming = Trimming.EllipsisCharacter;
            Rectangle r = RectangleHelper.GetCenterBounds(TextBounds, new Size(TextBounds.Width, appearance.CalcDefaultTextSize(cache.Graphics).Height));
            DrawTextShadow(cache, appearance, r);
            cache.DrawString(text, appearance.Font, appearance.GetForeBrush(cache), r, appearance.GetStringFormat());
        }

        protected override int CalcTextHeight(Graphics graphics, AppearanceObject appearance)
        {
            return (int)(graphics.MeasureString(Text, Owner.Font).Height); //标题栏的高度
        }
    }

调用时:

UIMessageBox.Show("This is a message");

原文地址:https://www.cnblogs.com/xyz0835/p/11110373.html

时间: 2024-10-06 08:48:43

C# DevExpress XtraMessageBox自定义字体,字体大小,自定义按钮大小,自定义Icon的相关文章

@font-size 自定义网页字体

通常情况下,在实际Web页面开发中我们往往只能使用计算机已经安装好的字体比如黑体.宋体.雅黑等等,那如果遇到特殊字体该怎么办呢?有人说用图片替代,这个只能针对特殊场景的局部使用,实乃下下之策. 例如:一个注册页面的"注册会员"几个字 CSS3引入的@font-face 这一属性可以很好的解决这个问题,可以帮助我们非常灵活的使用一些特殊的字体,即使用户电脑里面没有安装这个字体,网页也可以显示.当然,同其他属性一样,IE8及以下浏览器不支持@font-face 基本语法: @font-fa

Qt:使用自定义的字体

Qt:使用自定义的字体 1. 下载字体文件 2. 加载字体文件 3. 使用字体 QFontDatabase::addApplicationFont("XENOTRON.TTF"); ui->toolButton_2->setFont(QFont("XENOTRON", 34)); http://www.cppblog.com/biao/archive/2012/01/01/163345.html

如何在网页使用自定义的字体

有时候我们需要在网页上显示自定义的字体,方法在网上有很多,下面说下自己的看法.先看看演示效果: 效果演示 2014年9月4日 星期四 13:38:42 美国 00:38:42澳门威尼斯人赌场 日本 14:38:42 英国 07:38:42 澳大利亚 16:38:42 在网页中嵌入非系统自带字体,虽然技术上能实现,但是对国内来说,没有太大的实际意义,因为一个中文体文件起码20M+,而且各个浏览器支持的字体文件还都不一样,也就是说,在服务器端必须有2-3个不同格式的字体文件,用来应付各个浏览器,可以

iOS 开发 自定义UIFont字体

之前的好几个项目,客户都要求使用微软雅黑字体,可是iOS没有自带这个字体,肿么办 只能自己自定义字体了,下面是自定义字体的几个重要步骤: 1.添加对应的字体(.ttf或.otf)到工程的resurce,例如my.ttf. 2.在info.plist中添加一项Fonts provided by application (item0对应的value为my.ttf,添加多个字体依次添加就可以了). 3.使用时 aLabel.font=[UIFont fontWithName:@"XXX" s

iOS上使用自定义ttf字体

项目中想使用第三方的字体,在stackoverflow上查询解决办法,也折腾一会,添加成功,示例如下: 1.将xx.ttf字体库加入工程里面 2.在工程的xx-Info.plist文件中新添加一行Fonts provided by application,加上字体库的名称 3.引用字体库的名称,设置字体: [UIFontfontWithName:@"fontname" size:24]; UILabel *label = [[UILabel alloc] initWithFrame:C

QtCreator的一些自定义代码字体和颜色

QtCreator的一些自定义代码字体和颜色 一.配色方案: 配置方法:工具->选项->文本编辑器->配色方案 如果对这些QtCreator自带的配色方案不满意,则需要手动进行添加 方法:这些配色方案是以xml文件的形式存在于 %QtCreatorDir%\share\qtcreator\styles\ 中. <?xml version="1.0" encoding="UTF-8"?> <style-scheme version=

比较两个数的大小,自定义比较两个整数的大小的方法

比较两个数的大小,自定义比较两个整数的大小的方法: 如果第一个数大,返回1 如果相等返回0 如果第一个数小,返回-1 在Main()方法中输入两个数,调用这个方法 示例: 请输入两个数: 45 56 第二个数大 按任意键继续...... 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 7 n

UITextView根据内容、字体属性自动调节自己的大小

由于项目中要用到在一个scrollview中添加多个标题view.textview,所以他们的布局就尤为重要了,我们必须只有严格知道各个视图的大小才能编辑每个视图的frame,才能添加到scrollview中.那么当我们的textview的text特别多,非常多时,自动计算自己的高度就比较重要了 下面是我的工程用到的方法,再此记录, /** * This method is used to calculate height of text given which fits in specific

Android麦克风录音带音量大小动态显示的圆形自定义View

1.所谓无图无真相,先上效果图.我们要实现的就是中间那个录音的按钮,周边会显示一圈音量大小的波形 2.VolumCircleBar继承自View,我们进行了自定义,代码如下 package com.rdinfo.ccenglish.ui.ccprofile.view; import android.content.Context; import android.content.res.TypedArray; import android.graphics.Bitmap; import andro