gpt4 book ai didi

c++ - 如何通过与 GDI 对其颜色进行异或运算来在填充的矩形上绘制文本?

转载 作者:行者123 更新时间:2023-11-28 05:05:19 26 4
gpt4 key购买 nike

我不确定我是否用文字表达正确。最好的方法是用图像来展示它。我正在尝试填充一个矩形,同时反转其中的文本颜色。就像 edit 控件一样:

enter image description here

所以这是一个绘图代码(从 WM_PAINT 调用):

//Erase background
::FillRect(hDC, &rcClient, ::GetSysColorBrush(COLOR_WINDOW));

//Draw text
::DrawText(hDC, text, text.size(), &rc,
DT_LEFT | DT_TOP | DT_EDITCONTROL | DT_NOPREFIX | DT_SINGLELINE);

//Draw highlighted rect & invert text
HGDIOBJ hOldBrush = ::SelectObject(hDC, ::GetSysColorBrush(COLOR_HIGHLIGHT));
::PatBlt(hDC, rcDrawFrame.left, rcDrawFrame.top, rcDrawFrame.Width(), rcDrawFrame.Height(), DSTINVERT);
::SelectObject(hDC, hOldBrush);

但是由于某种原因,背景矩形显示为黑色,而且我知道 COLOR_HIGHLIGHT 在这个系统上是蓝色的:

enter image description here

那么我做错了什么?

最佳答案

您可能需要考虑不同的策略; drawing the text twice with inverted clipped region .

关于c++ - 如何通过与 GDI 对其颜色进行异或运算来在填充的矩形上绘制文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44967915/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com