DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: wjy13061029975
今日帖子: 0
在线用户: 6
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2020/3/21 12:29:33
标题:
我出图片你来猜系列(1):说说下图中的字符位置变换程序是怎么实现的? 浏览:1202
加入我的收藏
楼主: 很久前就打算做这个我出图片你来猜技术交流的系列了,这个系列不会有很庞大的代码,都是我自己经验中实现过的一些小巧有趣的功能,不是为了炫技,源码都会公开,但为了技术交流的互动性,回复超20条后公布源码。今天是第一个,先尝试一下互动效果再决定以后会要不要继续更新,如果大家不感兴趣我就不再浪费时间了。

请根据下图中的效果或附件中的程序,猜测出可能的实现方式都有哪些?
此帖子包含附件:
GIF 图像
大小:106.9K
----------------------------------------------
18114532@qq.com
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2020/3/21 12:31:08
1楼: 这是可执行程序
此帖子包含附件:abcjingtong_202032112313.zip 大小:417.7K
----------------------------------------------
18114532@qq.com
作者:
男 he_19_79 (he) ▲▲▲▲▲ -
普通会员
2020/3/21 12:45:56
2楼: 我觉得, DevExpress的TdxAlertWindowManager可以实现.
----------------------------------------------
-
作者:
男 keymark (嬲) ▲▲▲△△ -
普通会员
2020/3/21 13:07:08
3楼: gdi
----------------------------------------------
[alias]  co = clone --recurse-submodules  up = submodule update --init --recursiveupd = pullinfo = statusrest = reset --hard懒鬼提速https://www.cctry.com/>http://qalculate.github.io/downloads.htmlhttps://www.cctry.com/
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/3/21 13:11:02
4楼: 透明窗体嵌入桌面。。。。貌似不行,嵌入桌面可以在图标之上,但会在别的窗体之下。就不嵌入桌面了,一个透明窗体跑来跑去,哈哈
----------------------------------------------
-
作者:
男 ghs_79 (ghs) ★☆☆☆☆ -
盒子活跃会员
2020/3/21 14:06:15
5楼: 应该是透明窗体+lable
----------------------------------------------
Delphi爱好者。
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2020/3/21 15:42:07
6楼: 找到活动窗体,透明窗体在活动窗体的四个角来回跑
类似于 Office 助手,输入法,此类的吧
----------------------------------------------
武汉天气不好
作者:
男 744840146 (744840146) ▲▲▲▲▲ -
普通会员
2020/3/21 23:41:37
7楼: 1 抓图做背景合成图片,用全屏隐藏边框窗口进行显示
2 透明窗口,label显示红色字体
----------------------------------------------
-
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2020/3/22 10:04:26
8楼: 感兴趣的朋友,可以下载执行程序跑起来看看,花时间按照上面说的几个方法试试,不管最后能不能实现,做的过程中都会学到东西的。20楼后公布参考答案,我也盖一楼。
----------------------------------------------
18114532@qq.com
作者:
男 mychj (mychj123) ★☆☆☆☆ -
普通会员
2020/3/22 13:20:33
9楼: 确实很神奇,也不会影响到其它的操作
----------------------------------------------
-
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2020/3/22 13:56:48
10楼: 程序运行了 900多k 用spy++看 就是普通的VCLForm窗体

从视觉效果上看, 边缘锯齿很严重, 颜色不带渐变, 排除GDI+的实现方式

从窗体特性上来看, 不带鼠标穿透效果(并不是楼上说的不影响其他操作, 只是你正好没点到窗口上)

所以应该就是根据文字生成图片, 然后转换成的异形窗体

关键API:
CreateRectRgn
CombineRgn
SetWindowRgn
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/3/22 14:25:44
11楼: 透明窗体,鼠标点在字间空白处也是能穿透的,只有正好点在字体上才会被捕获
----------------------------------------------
-
作者:
男 dalas (dalas) ★☆☆☆☆ -
普通会员
2020/3/22 14:45:37
12楼: 写了个例子,几行代码,试试,效果是不是一样。
鼠标去点字体和字体间空白处看看。
此帖子包含附件:dalas_2020322144535.zip 大小:957.4K
----------------------------------------------
-
作者:
男 hs_kill (lzl_17948876) ★☆☆☆☆ -
普通会员
2020/3/22 15:46:24
13楼: to 11楼
你没理解我的意思, 异形窗体以后, 只有见到的内容才是窗体, 而不是原始的矩形框....
其实我们说的一样

所谓鼠标穿透 是指显示的部分不响应消息, 只显示
对应到代码上, 就是给windowlong加上 WS_EX_TRANSPARENT和WS_EX_LAYERED样式

WS_EX_LAYERED对应vclform的alphablend属性
WS_EX_TRANSPARENT自己加
为了能看出效果, 再给form加个stayontop

可以用下面的代码看下效果

procedure TForm1.Button1Click(Sender: TObject);
begin
  Self.FormStyle := fsStayOnTop;
  Self.AlphaBlend := True;
  Self.AlphaBlendValue := 128;
  SetWindowLong(Self.Handle, GWL_EXSTYLE, GetWindowLong(Self.Handle, GWL_EXSTYLE) or WS_EX_TRANSPARENT);
end;


楼主的这种不叫鼠标穿透, 只是改变了窗口形状, 所以只要不点到字上, 实际上等于没点到窗口
----------------------------------------------
http://www.cnblogs.com/lzl_17948876/
作者:
男 testerhook (CaptainHook) ★☆☆☆☆ -
普通会员
2020/3/23 11:01:14
14楼: XP下实现异性窗体的方法而已。
其实用FireMonkey在XP下就能简单实现这种效果了,而且还很好看。
----------------------------------------------
-
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行773.1934毫秒 RSS