如何绘制“非”彩色文本?

2024-01-09

我正在寻找一种用反转颜色绘制文本的方法。 对于形状,我们有TPenMode可以设置为pmNot,但我们不能对文本执行此操作。我该怎么做呢?


这是这样做的:

procedure DrawTextNOT(const hDC: HDC; const Font: TFont; const Text: string; const X, Y: integer);
begin
  with TBitmap.Create do
    try
      Canvas.Font.Assign(Font);
      with Canvas.TextExtent(Text) do
        SetSize(cx, cy);
      Canvas.Brush.Color := clBlack;
      Canvas.FillRect(Rect(0, 0, Width, Height));
      Canvas.Font.Color := clWhite;
      Canvas.TextOut(0, 0, Text);
      BitBlt(hDC, X, Y, Width, Height, Canvas.Handle, 0, 0, SRCINVERT);
    finally
      Free;
    end;
end;

Example:

procedure TForm1.FormClick(Sender: TObject);
begin
  Canvas.Brush.Color := clRed;
  Canvas.FillRect(ClientRect);
  DrawTextNOT(Canvas.Handle, Canvas.Font, 'This is a test.', 20, 100);
//  DrawTextNOT(Canvas.Handle, Canvas.Font, 'This is a test.', 20, 100);
end;

您可能还想禁用 ClearType。为此,我建议您参考之前的一个SO问题 https://stackoverflow.com/questions/3716304/is-there-a-way-to-disable-font-anti-aliasing-when-using-textrect-aka-exttextout.

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

如何绘制“非”彩色文本? 的相关文章

  • 检测 TWebBrowser 文档中的活动元素何时发生变化

    是否有任何我可以挂钩的事件来检测网页上的活动元素何时发生变化 例如 当用户聚焦编辑框时 我知道我可以检查计时器中的活动元素 但如果可能的话我宁愿避免这种情况 这并不是对您的问题的完整答案 但希望能帮助您完成大部分工作 对于通过类似的 q 到
  • 我可以访问 TBits 内部位图吗?

    In particular i want to preset desired size fetch a bitmap from external source and then work with data in classy object
  • 作为属性的自定义类的数组

    我试图使用自定义类的数组作为我的组件的属性 但问题是这些值没有保存到组件中 这意味着如果我设置值 保存所有内容并再次打开项目 组件的值消失 我的代码如下所示 unit Unit1 interface uses Windows ExtCtrl
  • 如何隐藏 WebBrowser 直到网站完成加载/下载过程?

    我想知道我该如何隐藏WebBrowser直到网站加载过程完成 另外 我使用 Panel1 和WebBrowser在它的上面 为什么 好吧 这样 我可以完全像我想要的 WebBrowser 一样设置 Panel1 的大小和位置 然后将 Web
  • Firemonkey 移动应用程序和远程 MySQL

    我正在使用 Delphi XE5 并且我已经创建了基本的 Firemonkey 移动应用程序 Delphi 我想连接到远程 MySQL 数据库 我应该使用哪一个数据库管道 FireDAC DBExpress 等 您可以使用标准 TSQLQu
  • ClientDataset 索引更改时不计算 TAggregateField

    我正在使用连接到 DBGrid 的 TClientDataset 和几个聚合字段 用于计算其他几个浮点字段的总和 所有字段均已在设计时创建 一切都按预期工作 直到 ClientDataset 的 IndexName 使用自定义索引更改 以便
  • 可以在delphi数据集中创建一个假数据字段吗?

    我想在 DataSet 不是 ClientDataSet 中创建一个 假 数据字段 该字段不应存储在数据库中 它不是计算字段 应允许用户输入输入数据 该字段具有业务逻辑含义 因此用户更新其值后应该更新其他字段 使用 OnFieldChang
  • TEdit onclick 全选?

    每当用户单击 TEdit1 或单击选择其中的某些文本时 如何选择 TEdit1 的所有文本 执行超出默认行为的任何操作都可能非常危险TEdit控制 您的用户知道标准 Windows 控件的行为方式 任何偏离此的行为都可能导致混乱 默认情况下
  • TRESTRequest:是否可以在 POST 请求中使用自定义媒体类型?

    例如 我们有一个 API 需要我们自己的供应商特定内容类型application vnd xxxx custom custom data json但查看 REST Client 的源代码 它似乎总是默认为 REST Types 中的 Con
  • Delphi 2010:如何将 UTF8 编码的 PAnsiChar 转换为 UnicodeString?

    情况 我有一个外部 DLL 它使用 UTF 8 作为其内部字符串格式 接口函数都使用 PAnsiChar 来传递字符串 我的应用程序的其余部分使用 Delphi 的本机string类型 由于我正在使用 Delphi 2010 这将映射到Un
  • 如何使用 Delphi Sydney 10.4.2 和 Edge Webbrowser 组件获取 HTML SOURCE

    I have TEdgeBrowser在德尔福 10 4 2 中 我想从 HTML 代码中提取基于 RegEx 的字符串 在过去 这是可能的TWebBrowser 仅适用于 IE 11 或更低版本 作为 selectedEngine 但我的
  • delphi分组框标题颜色变化

    我正在使用 BDS 2006 想知道您是否可以使用项目中存在的 XPmanifest 更改组框和单选按钮组标题的颜色 因为它始终是蓝色 唯一的方法是重写 Paint 方法TGroupBox http docwiki embarcadero
  • Winform 没有.NET 框架?

    我必须创建一些表单并将其作为直接 EXE 提供 而不是安装程序 它安装 NET 框架 最终用户对此不满意 他们想要可以直接打开和工作的东西 我知道它可以作为网络完成 但我正在寻找 winforms 吗 请建议哪种工具 技术可以处理这个问题
  • 使用 StretchDIBits 使用 Delphi 6 处理条形码图像 - 输出中缺少条形线

    我的应用程序是在 Delphi 6 中开发的 由于后台处理和大量数据 它消耗大约 60MB 120MB 物理内存 这是一个资源密集型应用程序 该应用程序的功能之一是在进行某些处理后创建条形码图像 如果用户继续生成条形码 那么至少十分之一的条
  • 如何将FireMonkey表单无缝嵌入VCL表单中?

    我使用了中描述的技巧这个问题 https stackoverflow com questions 7315050 delphi xe2 possible to instantiate a firemonkey form in vcl app
  • 如何读取注册表项的默认值

    我有一个 Delphi XE2 项目来使用注册表项进行某些操作 所以我定义了以下代码 procedure TMainForm BitBtn01Click Sender TObject var RegistryEntry TRegistry
  • 如何向标准集合编辑器添加图标?

    我有一个自定义控件 它利用TCollection and TCollectionItem 在集合编辑器中 我想向每个列表项添加图标 该列表项由内部TImageList 在其父组件内 集合项本身代表图标 我想在这个编辑器中显示相应的图标 如何
  • DELPHI 和 WANT 或 NANT

    We use 巡航控制 net http confluence public thoughtworks org display CCNET Welcome to CruiseControl NET在 Delphi 2006 应用程序中进行持
  • 当 Delphi 处于覆盖模式时,如何更改它的光标形状?

    当使用 Delphi 的任何版本时 我有时会碰巧按下插入键并打开覆盖模式 这通常是一个很大的麻烦 并且您进入覆盖模式的唯一指示是编辑器底部的小文本 当使用其他程序 首先想到的是 Notepad 时 当您处于插入模式时 文本光标是 当您处于覆
  • Delphi 5 的哈希表实现 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 您知道 Delphi 5 的良好且免费的哈希表实现吗 我需要在哈希表中组织大量数据 并且我有点担心在网

随机推荐

  • 卤素键盘输入示例和取消订阅事件?

    如何取消订阅除 HandleKey 之外的其他操作的键盘事件键盘输入示例 https github com slamdata purescript halogen blob master examples keyboard input sr
  • 缓冲区溢出 - 普通用户中的 SegFaults

    下面是我的代码 包括易受攻击的程序 stack c 和我的漏洞利用程序 exploit c 这段代码适用于教授为 Windows 用户发送的预打包 Ubuntu 9 我有一个朋友在他的计算机上测试了它 但在我在 iMac 上运行的 Ubun
  • 如何从 Android 设备访问本地 REST api?

    我的计算机上本地运行着一个 spring REST api 我想使用这个 api 进行 android 开发 这是我的获取请求 public static String sendGet final String url StringBuil
  • 是否可以通过动态 LINQ 进行注入?

    使用动态 LINQ 库 link http weblogs asp net scottgu archive 2008 01 07 dynamic linq part 1 using the linq dynamic query librar
  • jquery文档主体一键事件

    有人可以帮我解决这个问题吗 我有一个按钮 单击它会显示某个 div 这个 div 有几个后代 现在 我想要的是 当我单击文档中的其他位置时 但在这些后代中却没有这个div消失了 我的想法是使用 not 选择器 如下所示 button cli
  • Spark中“RDD可以存储在内存中”是什么意思?

    Spark的介绍中说 RDD 可以在查询之间存储在内存中 无需复制 http spark apache org research html 据我所知 您必须使用手动缓存 RDD cache or persist 如果我不采取任何措施 如下所
  • Windows subprocess.Popen 不带 shell=True 的批处理文件

    我有一个运行的函数lessc 安装有npm install g less gt gt gt import subprocess gt gt gt subprocess Popen lessc Traceback most recent ca
  • 在打开的 Windows 资源管理器中选择一个文件

    我有以下代码 它将启动 Windows 资源管理器并选择一个文件并最大化资源管理器 然后它将查找 Windows 资源管理器并将其最小化 我做了最大化 最小化 这样我就不必手动执行此操作 我知道很懒 我在代码中设置了此设置 仅在文件夹未打开
  • JavaScript 倒计时器:计算距离美国东部标准时间午夜还有多少秒

    我正在使用在 JavaScript 中运行的 24 小时倒计时器 目前 它使用秒作为其基本测量单位 我在这里列出了 86400 但我想计算每天到午夜 东部标准时间 5 还剩多少秒 有人可以演示我如何定义该值并将其插入 时间 变量吗 我已经看
  • 创建 Pandas 数据框,并将列表作为行中的值

    如何按以下格式创建 pandas 数据框 A B C D 0 1 2 3 4 2 3 4 5 4 5 5 6 6 3 4 5 1 2 3 5 6 3 4 6 6 3 4 5 7 2 6 3 4 2 8 9 6 7 5 7 9 5 3 7 9
  • JavaScriptendsWith 在 IEv10 中不起作用?

    我正在尝试使用endsWith 比较JavaScript 中的两个字符串 例如 var isValid string1 endsWith string2 它在 Google Chrome 和 Mozilla 中运行良好 当涉及 IE 时 它
  • Stripe - 如何将小数金额发送到 API 进行付款?

    我正在将电子商务平台从使用 SagePay 迁移到 Stripe 文档显示使用amount的图1099和货币gbp https stripe com docs payments accept a payment web create pay
  • nginx 背后的 Unicorn 与 Passenger Standalone [已关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • Facebook API - “我所有的喜欢”查询

    是否可以找回all用户曾经 喜欢 过这些帖子吗 质量等级 API 我找不到办法 FB 专家们 我们将不胜感激您的帮助 Use the Stream get http wiki developers facebook com index ph
  • 编译时引发的内部错误(NullPointerException)intellij Idea

    我正在尝试启动一个项目 java groovy on gradle 完成构建后 但是 我在两者开始时都遇到了错误main或使用以下堆栈跟踪进行单元测试 Error Internal error java lang NullPointerEx
  • 类型“Observable”上不存在属性“switchMap”

    当尝试将 switchMap 运算符应用于我的 Observable 时 我收到以下错误消息 类型 Observable 上不存在属性 switchMap 我目前使用 rxjs 版本 5 5 2 在我的组件中 我将其导入如下 import
  • Android 避免缓存

    http client DefaultHttpClient httpClient new DefaultHttpClient HttpEntity httpEntity null HttpResponse httpResponse null
  • Mono 和 C# IOCP:这是一个好主意吗?

    我正在将 C 应用程序移植到在其服务器上使用 IOCP 的 C mono 可以像 windows 一样处理 IOCP 吗 我会获得与 C 相当的性能还是应该尝试其他方法 thanks IOCP 的主要开销是 IO 而不是语言 你should
  • 禁用统计/分析 Javascript

    我的免费虚拟主机将分析 javascript 附加到所有 PHP 和 HTML 文件中 这很好 除了我使用 nuSoap 为我正在处理的 Web 服务创建 WSDL 文件 我的该死的主机将其添加 到我的 php 生成的 WSDL 文件中 有
  • 如何绘制“非”彩色文本?

    我正在寻找一种用反转颜色绘制文本的方法 对于形状 我们有TPenMode可以设置为pmNot 但我们不能对文本执行此操作 我该怎么做呢 这是这样做的 procedure DrawTextNOT const hDC HDC const Fon