在屏幕C++上绘制文本
我想在所有窗口上方的屏幕上绘制文本。 我发现了HDC并开始使用它。我有两个问题:文本闪烁,有背景。我发现了这个函数:在屏幕C++上绘制文本,c++,text,draw,gdi,C++,Text,Draw,Gdi,我想在所有窗口上方的屏幕上绘制文本。 我发现了HDC并开始使用它。我有两个问题:文本闪烁,有背景。我发现了这个函数: SetBkMode(hdc, TRANSPARENT); 但它所做的只是取消闪烁。我还是有背景的。我现在的最终代码是: RECT rect = { 20, 20, 200, 200 }; SetTextColor(hdc,RGB(255,0,0)); SetBkMode(hdc, TRANSPARENT); SetBkColor(hdc,RGBA
SetBkMode(hdc, TRANSPARENT);
但它所做的只是取消闪烁。我还是有背景的。我现在的最终代码是:
RECT rect = { 20, 20, 200, 200 };
SetTextColor(hdc,RGB(255,0,0));
SetBkMode(hdc, TRANSPARENT);
SetBkColor(hdc,RGBA(0,255,0,0));
DrawText(hdc, L"My text",-1,&rect,DT_LEFT);
我把这个代码放在whiletrue语句中,然后睡眠1毫秒。
在我得到hdc初始化之前:
HDC hdc = GetDC(0);
所以在这一点上,我得到了非闪烁文本,但背景不透明。
背景是半透明的,所以我可以看到它下面的东西,但它不会更新。当我在下面放一个新窗口时,我可以看到旧窗口的背景
我试着在这个问题中使用wndproc:
但它一点作用也没有我甚至看不见文本
我尝试使用msdn站点上的textout示例:
但它也没什么作用
如何在没有背景的情况下在屏幕上绘制文本?
谢谢大家我以前从未使用过这个,但是如果删除SetBkColor函数会发生什么?使用CreateSolidBrush和FillRect清除背景。搜索双缓冲区以避免闪烁。John-它没有任何效果看起来是相同的Wimmel-如果我填充rect,它将绘制矩形并隐藏背景,我不想隐藏它。或者我不理解你correctly@user2462683啊,我误解了。你想要的是有点难,但看看你已经使用RGB与SetTextColor,但RGBA与SetBkColor。。。为了清晰起见,如果您没有设置alpha值,我建议您选择一个或另一个RGB作为首选。但是我不认为这能解决你的问题。。。