社区
Delphi
帖子详情
如何实现透明窗体的无痕迹移动
daiguan
2000-08-16 03:09:00
如何不用控件,实现一个透明的窗体且此窗体无论是窗体移动还是窗体上的控件移动都不留下痕迹,并且移动时的闪烁不太厉害。我试过如下的方法:
1、将窗体画布设为cs_clear.
2、用createwindowex函数建立一个透明样式的窗体。
3、利用windows的绘画区域函数
实现的透明窗体,但移动或重画时都出了问题。
...全文
250
7
打赏
收藏
如何实现透明窗体的无痕迹移动
如何不用控件,实现一个透明的窗体且此窗体无论是窗体移动还是窗体上的控件移动都不留下痕迹,并且移动时的闪烁不太厉害。我试过如下的方法: 1、将窗体画布设为cs_clear. 2、用createwindowex函数建立一个透明样式的窗体。 3、利用windows的绘画区域函数 实现的透明窗体,但移动或重画时都出了问题。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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拖动的时候不也有滞后吗,要想没有痕迹,干脆就只好移动外框,然后再一次跳到哪。
鼠标
移动
痕迹 C#,Delphi,VB,VB.net四种语言版本(附
窗体
透明
)-思路和源代码(2)
鼠标
移动
痕迹 C#,Delphi,VB,VB.net四种语言版本(附
窗体
透明
)-思路和源代码(1) 这篇文章介绍了鼠标痕迹四语言版本中的VB版本,接下来介绍Delphi版本。 思路还是一样的,一个
窗体
一个Timer Var中同样四个变量 size:integer; i:integer; ce:integer; xv:array[0..1023] of integer;
鼠标
移动
痕迹 C#,Delphi,VB,VB.net四种语言版本(附
窗体
透明
)-思路和源代码(3)
鼠标
移动
痕迹 C#,Delphi,VB,VB.net四种语言版本(附
窗体
透明
)-思路和源代码(1) 鼠标
移动
痕迹 C#,Delphi,VB,VB.net四种语言版本(附
窗体
透明
)-思路和源代码(2) 这两篇分别介绍了VB和Delphi版本,那么现在VB.Net和C#一起说说吧,语言还是很相近的。 先C#的,直接就加进
窗体
,这时候需要四个变量,ox和oy代表前一个x和前一个y,用于判断鼠标
鼠标
移动
痕迹 C#,Delphi,VB,VB.net四种语言版本(附
窗体
透明
)-思路和源代码(1)
QQ交流:740382997 或者发邮件给我:yichensoft@126.com 翼尘软件工作室 翼尘Q群号:252367359 鼠标
移动
痕迹,四种语言版本的
实现
。 先看效果:Delphi版本的 其他语言效果: 先说下思路吧,既然是鼠标痕迹,那么一定要从MouseMove之类的事件开始,记录下每次鼠标移
创建
透明
窗口及其应用--屏幕画笔
创建
透明
窗口及其应用--屏幕画笔 示例代码下载:创建
透明
窗口(屏幕画笔).zip (请不要直接使用迅雷下载) 注:VC6下编译通过 一、使窗口
透明
其实很简单。就是一个函数SetLayeredWindowAttributes 步骤如下: 步骤一:让窗口具
透明
的特性 ::SetWindowLong(m_hWnd,GWL_EXSTYLE, GetWindowLong(m_hWnd,GWL_EXSTYLE)|WS_EX_LAYERED); 当你不希望窗口
透明
时,就使这个添加的属性去掉就可以了,
C#,winform,gdi+,简单
实现
鼠标拉出虚线框,适合新手
按下鼠标拖动就能拉出虚线框,先看效果图:
实现
原理: 利用
窗体
的三个鼠标事件,按下,
移动
和释放。按下鼠标时,记录按下的坐标,按住
移动
时根据
移动
的位置计算长宽,用gid+画虚线框,显示到
窗体
上。松开鼠标时画一张
透明
图像清除上面的痕迹,方框消失。 关键代码: //鼠标按下事件 private void Form1_MouseDown(object s
Delphi
5,386
社区成员
262,729
社区内容
发帖
与我相关
我的任务
Delphi
Delphi 开发及应用
复制链接
扫一扫
分享
社区描述
Delphi 开发及应用
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章