我有自定义控件。我在那里定义了OnPaint()事件。我们假设它是一个文本编辑控件。我想显示自定义插入符号叠加层。 我用CreateGraphics()创建了一个Graphics对象。 如果在每个眨眼计时器上打勾,我会调用绘制插入符号的代码 - 它是可见的。 在OnPaint()中画了一些画后,我的插入符号消失了。它可以重绘,但是当我试图在主OnPaint()处理程序的末尾放置DrawCaret()时,没有任何反应。 插入符号未被绘制,或者它被绘制和清除。
在代码中的各个位置强制DrawCaret()会导致丑陋的闪烁,最坏的情况下什么都不做。 当我在blinkTimer_Tick()事件处理程序中使用DrawCaret()时,它会被绘制,但它会不规则地闪烁。
不,我不想使用Win32 Caret - 它的颜色无法设置。我需要画出自己的插入符号,它必须眨眼。
如果必须闪烁,我假设我不能使用控件的OnPaint()事件处理程序。
答案 0 :(得分:0)
我的坏。这似乎是一个非常糟糕的方法。我已经将插入符号绘制到主OnPaint()上,它可以作为魅力。
我有点担心Invalidate()我称每个插入符号“闪烁”,如果我创建插入符作为子控件怎么办?更轻还是更重?我想我不会测试它,当前的解决方案显示没有CPU或GPU负载。