如何实现透明窗体的无痕迹移动

daiguan 2000-08-16 03:09:00
如何不用控件,实现一个透明的窗体且此窗体无论是窗体移动还是窗体上的控件移动都不留下痕迹,并且移动时的闪烁不太厉害。我试过如下的方法:
1、将窗体画布设为cs_clear.
2、用createwindowex函数建立一个透明样式的窗体。
3、利用windows的绘画区域函数
实现的透明窗体,但移动或重画时都出了问题。
...全文
246 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
daiguan 2000-08-18
  • 打赏
  • 举报
回复
DiretDraw下实验成功,不过DiretDraw有一个致命的毛病,内存不稳定时会强制退出,而且做一个窗体就用Diretx,有点大才小用。
能有半透明最好,我指的是透明的窗体。
daiguan 2000-08-18
  • 打赏
  • 举报
回复
谢谢提醒,不用窗体,直接建立一个半透明的控件。可以利用他们的Brush属性。但我想不通,为什么Form的Brush不行,而其他的行。
pino 2000-08-18
  • 打赏
  • 举报
回复
我还有一个主意,就是不要窗口,直接在screen上paint,鼠标事件可以通过hook,麻烦在于如何刷新才能不留痕迹(半透明窗体)
如果是透明窗体(比如圆窗体)就非常简单,有很多现成的例子
还是win2000好,有现成的透明函数......
shines77 2000-08-17
  • 打赏
  • 举报
回复
daiguan: 是半透明的,还是挖去一些空的所谓的透明窗体?
pino 2000-08-17
  • 打赏
  • 举报
回复
你的意思应该是指半透明的窗体吧?既可以透过窗体看到下面的窗体
我也试着做过,难度在于如何得到下面的窗体刷新的消息
在DiretDraw的全屏模式下实现也是一种思路,不过我还没有去实现过
欢迎大家一起来交流
daiguan 2000-08-17
  • 打赏
  • 举报
回复
我指的是屏幕无滞留的痕迹,移动后的重新刷新的不算。
shines77 2000-08-16
  • 打赏
  • 举报
回复
无痕迹,那是不可能的,那要看你的显卡行不行了,行的话什么都没问题。拖动都是会有点滞后的,你不看WinAmp拖动的时候不也有滞后吗,要想没有痕迹,干脆就只好移动外框,然后再一次跳到哪。

5,379

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 开发及应用
社区管理员
  • VCL组件开发及应用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧