在按钮上绘制文本 - 外观差异

2024-03-26

I have my custom button where I have overridden the OnPaint() and draw the text in it only. On runtime the text looks differently - spacing between chars is lacking. Here is the image of design & runtime of the button : enter image description here

油漆方法如下:

protected override void OnPaint(PaintEventArgs pevent)
{
    base.OnPaint(pevent);

    if (base.ContainsFocus)
    {
        // Draw inner dotted rectangle when button is on focus
        Pen pen = new Pen(Color.Gray, 3);
        Point p = base.Location;
        pen.DashStyle = System.Drawing.Drawing2D.DashStyle.Dot;
        Rectangle rectangle = new Rectangle(4, 4, Size.Width - 8, 
                                            Size.Height - 8);
        ControlPaint.DrawFocusRectangle(pevent.Graphics, rectangle);
    }

    // Draw the string to screen
    SizeF sf = pevent.Graphics.MeasureString(displayText, this.Font, 
                                             this.Width);
    Point ThePoint = new Point();
    ThePoint.X = (int)((this.Width / 2) - (sf.Width / 2));
    ThePoint.Y = (int)((this.Height / 2) - (sf.Height / 2));
    pevent.Graphics.DrawString(displayText, Font, 
              new SolidBrush(Color.FromArgb(255, 255, 254, 255)), ThePoint);
    this.Text = "";
}

知道我哪里出了问题以及如何处理吗?


您需要像这样设置正确的平滑模式:

Graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality

然后,结果应该看起来不错。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在按钮上绘制文本 - 外观差异 的相关文章

  • 如何将 std::string& 转换为 C# 引用字符串

    我正在尝试将 C 函数转换为std string参考C 我的 API 如下所示 void GetStringDemo std string str 理想情况下 我希望在 C 中看到类似的东西 void GetStringDemoWrap r
  • 在 xaml 中编写嵌套类型时出现设计时错误

    我创建了一个用户控件 它接受枚举类型并将该枚举的值分配给该用户控件中的 ComboBox 控件 很简单 我在数据模板中使用此用户控件 当出现嵌套类型时 问题就来了 我使用这个符号来指定 EnumType x Type myNamespace
  • 根据属性的类型使用文本框或复选框

    如果我有这样的结构 public class Parent public string Name get set public List
  • 在一个数据访问层中处理多个连接字符串

    我有一个有趣的困境 我目前有一个数据访问层 它必须与多个域一起使用 并且每个域都有多个数据库存储库 具体取决于所调用的存储过程 目前 我只需使用 SWITCH 语句来确定应用程序正在运行的计算机 并从 Web config 返回适当的连接字
  • 如何在 Cassandra 中存储无符号整数?

    我通过 Datastax 驱动程序在 Cassandra 中存储一些数据 并且需要存储无符号 16 位和 32 位整数 对于无符号 16 位整数 我可以轻松地将它们存储为有符号 32 位整数 并根据需要进行转换 然而 对于无符号 64 位整
  • std::list 线程push_back、front、pop_front

    std list 线程安全吗 我假设不是这样 所以我添加了自己的同步机制 我认为我有正确的术语 但我仍然遇到问题 每个函数都由单独的线程调用 Thread1 不能等待 它必须尽可能快 std list
  • C++11 删除重写方法

    Preface 这是一个关于最佳实践的问题 涉及 C 11 中引入的删除运算符的新含义 当应用于覆盖继承父类的虚拟方法的子类时 背景 根据标准 引用的第一个用例是明确禁止调用某些类型的函数 否则转换将是隐式的 例如最新版本第 8 4 3 节
  • free 和 malloc 在 C 中如何工作?

    我试图弄清楚如果我尝试 从中间 释放指针会发生什么 例如 看下面的代码 char ptr char malloc 10 sizeof char for char i 0 i lt 10 i ptr i i 10 ptr ptr ptr pt
  • 为什么 GCC 不允许我创建“内联静态 std::stringstream”?

    我将直接前往 MCVE include
  • 重载 (c)begin/(c)end

    我试图超载 c begin c end类的函数 以便能够调用 C 11 基于范围的 for 循环 它在大多数情况下都有效 但我无法理解和解决其中一个问题 for auto const point fProjectData gt getPoi
  • 如何获取 EF 中与组合(键/值)列表匹配的记录?

    我有一个数据库表 其中包含每个用户 年份组合的记录 如何使用 EF 和用户 ID 年份组合列表从数据库获取数据 组合示例 UserId Year 1 2015 1 2016 1 2018 12 2016 12 2019 3 2015 91
  • 空指针与 int 等价

    Bjarne 在 C 编程语言 中写道 空指针与整数零不同 但 0 可以用作空指针的指针初始值设定项 这是否意味着 void voidPointer 0 int zero 0 int castPointer reinterpret cast
  • LINQ:使用 INNER JOIN、Group 和 SUM

    我正在尝试使用 LINQ 执行以下 SQL 最接近的是执行交叉联接和总和计算 我知道必须有更好的方法来编写它 所以我向堆栈团队寻求帮助 SELECT T1 Column1 T1 Column2 SUM T3 Column1 AS Amoun
  • C 函数 time() 如何处理秒的小数部分?

    The time 函数将返回自 1970 年以来的秒数 我想知道它如何对返回的秒数进行舍入 例如 对于100 4s 它会返回100还是101 有明确的定义吗 ISO C标准没有说太多 它只说time 回报 该实现对当前日历时间的最佳近似 结
  • 相当于Linux中的导入库

    在 Windows C 中 当您想要链接 DLL 时 您必须提供导入库 但是在 GNU 构建系统中 当您想要链接 so 文件 相当于 dll 时 您就不需要链接 为什么是这样 是否有等效的 Windows 导入库 注意 我不会谈论在 Win
  • C# 使用“?” if else 语句设置值这叫什么

    嘿 我刚刚看到以下声明 return name null name NA 我只是想知道这在 NET 中叫什么 是吗 代表即然后执行此操作 这是一个俗称的 条件运算符 三元运算符 http en wikipedia org wiki Tern
  • DotNetZip:如何提取文件,但忽略zip文件中的路径?

    尝试将文件提取到给定文件夹 忽略 zip 文件中的路径 但似乎没有办法 考虑到其中实现的所有其他好东西 这似乎是一个相当基本的要求 我缺少什么 代码是 using Ionic Zip ZipFile zf Ionic Zip ZipFile
  • 指针和内存范围

    我已经用 C 语言编程有一段时间了 但对 C 语言还是很陌生 有时我对 C 处理内存的方式感到困惑 考虑以下有效的 C 代码片段 const char string void where is this pointer variable l
  • Mono 应用程序在非阻塞套接字发送时冻结

    我在 debian 9 上的 mono 下运行一个服务器应用程序 大约有 1000 2000 个客户端连接 并且应用程序经常冻结 CPU 使用率达到 100 我执行 kill QUIT pid 来获取线程堆栈转储 但它总是卡在这个位置
  • 从 mvc 控制器使用 Web api 控制器操作

    我有两个控制器 一个mvc控制器和一个api控制器 它们都在同一个项目中 HomeController Controller DataController ApiController 如果我想从 HomeController 中使用 Dat

随机推荐

  • 在多个 .env 文件之间切换,例如 .env.development 和 node.js

    我想为每种模式 开发 生产等 使用单独的 env 文件 在处理我的 vue js 项目时 我可以使用类似的文件 env development or env production为同一环境键获取不同的值 例如 在 env developme
  • 附加元素后 CSS 过渡不起作用

    我遇到了 CSS 转换问题 在尝试其他操作之前 我想了解问题所在 一个容器中有 3 个盒子和一个 下一步 按钮 目标是让下一个框顶部出现在顶部 并在按下 下一个 按钮时淡入 通过将框附加到容器来将其定位在顶部 以便将其添加为最后一个元素 从
  • 如何使用ClearCase注释子命令?

    我试图找出如何获取代码历史记录报告 在其中获取每个代码行的文件版本 我不需要为每个代码行获取多行 只有一个 annotate 子命令有很多参数 我找不到适合该目的的参数 你知道如何得到它吗 非常感谢 每个代码行的文件版本 这几乎看起来像最后
  • 对于非 OK 响应,使用 IHttpActionResult 返回内容

    对于从 Web API 2 控制器返回 如果响应正常 状态 200 我可以返回响应内容 如下所示 public IHttpActionResult Get string myResult return Ok myResult 如果可能的话
  • Oracle 错误:池连接请求超时

    我将 Oracle12c 与用 C 编写的应用程序一起使用 并使用 Oracle ManagedDataAccess dll 来处理数据库连接 我们的产品在运行多年后偶尔会抛出此异常 Oracle ManagedDataAccess Cli
  • 如何在C++中通过位运算找到素数?

    如何在C 中通过位运算找到素数 我认为做到这一点的方法是不要像我们通常那样将位集视为其数字表示 而是将其视为数字列表 所以位集 1111 代表数字 1 2 3 和 4 现在 如果我们说 1 代表素数 0 代表非素数 我们可以如下制作一个筛子
  • 如何解码非关键ASN1数据?

    是否可以使用 crypto 库来解码字节数组中的任意 ASN1 数据 其中有几个序列和整数 ash h 包含所有以 BufferedTransformation 作为输入的方法 但该类是不同密码和哈希的接口 这似乎与我的简单情况根本无关 我
  • 升级到 Angular 9 后,无法在类型文件中找到变量

    我有一个对外部日志记录组件的引用 在 js 文件中引用 我已在类型文件中定义了该组件 打字 d ts declare var LogglyTracker 我已将我的角度应用程序从版本 8 升级到版本 9 现在当我运行时ng build 我收
  • Django 模板名称冲突[重复]

    这个问题在这里已经有答案了 可能的重复 Django 视图 首先从调用应用程序的目录加载模板 https stackoverflow com questions 3092865 django view load template from
  • R 传单缩放控制选项

    我正在使用传单在 R 中构建地图工具 我想将缩放限制在某个区域 但是setMaxBounds功能似乎没有任何效果 library dplyr library leaflet library tigris ohio map lt leafle
  • 如何在 MongoDB 中组织多对多关系

    我有两个表 集合 用户和组 用户可以是任意数量的组的成员 并且用户也可以是任意数量的组的所有者 在关系数据库中 我可能有第三个表 名为 UserGroups 其中包含 UserID 列 GroupID 列和 IsOwner 列 我正在使用
  • 如何编写一个接受借用或拥有元素的“Vec”的函数?

    在 Rust 中 如何将拥有的对象向量传递给需要借用对象向量的函数 我是创建新向量的唯一选择吗 对于函数签名的最佳实践是什么 在该函数中我关心结构体所包含的泛型的类型 但不关心它是否被借用 示例情况 fn using vec of borr
  • MySQL 事务日志

    我正在开发一个项目 要求我们在 DBMS MySQL 中使用 事务日志 我们已经改用 InnoDB 以便使用事务来满足另一个需求 我想了解什么是交易日志 我已经搜索了一天多了 包括阅读 MySQL 文档 也许我只是没有寻找正确的关键词 我不
  • 在 python 中评估后缀?

    我想编写一个函数来计算作为列表传递的后缀表达式 到目前为止我已经得到 def evalPostfix text s Stack for symbol in text if symbol in 0123456789 s push int sy
  • 设备无法识别 USB 调试上的 AVD 设备

    我的公司推出了由中国公司制造的新Android学习选项卡 我在此选项卡上测试我的应用程序时遇到问题 我可以使用驱动程序升级选项卡的操作系统 但我无法将设备用作 AVD 我从开发者选项中打开了 USB 调试 升级操作系统的驱动程序和将设备用作
  • 如何对调用 getJSON 的 javascript 函数进行单元测试

    我已经在单元测试中苦苦挣扎了两天 但在异步测试方面我无法实现一些目标 我是单元测试的新手 我不明白为什么这不起作用 我有一个文件 login js 调用 getJSON url data function 并返回一个带有登录状态的字符串 成
  • Android OnClickListener 未在 GridView 中触发(仅限 2.2)

    我有一个由 CursorAdapter 生成的按钮网格视图 当 CursorAdapter 传递到 Gridview 时 视图会正确呈现 但网格中的第一个项目不会触发 OnClickListener 事件 如果我在网格中选择另一个按钮 该事
  • 使用java代码获取FXML文件节点

    如何使用 FXML 文件获取元素或节点Java 我知道使用方法初始化或通过设置控制器FxmL 中的类 但我需要在没有任何控制器的情况下完成它 我想使用访问 fxml 文件内的节点 我的 FXML 代码 HBox fx id hbx id h
  • 如何知道基类指针指向什么类型的对象?

    我有一个名为 Cell 的基类 其他类有一个指向该类的对象的指针 以及 3 个派生类 CellA CellB 和 CellC 当一个 Cell 死亡时 指针指向 Cell 否则是存活的 A B 或 C 如何知道此时此刻指针指向什么而采取行动
  • 在按钮上绘制文本 - 外观差异

    I have my custom button where I have overridden the OnPaint and draw the text in it only On runtime the text looks diffe