|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
|
2020/3/21 12:29:33 |
标题: |
我出图片你来猜系列(1):说说下图中的字符位置变换程序是怎么实现的? |
浏览:1202 |
|
加入我的收藏 |
楼主: |
很久前就打算做这个我出图片你来猜技术交流的系列了,这个系列不会有很庞大的代码,都是我自己经验中实现过的一些小巧有趣的功能,不是为了炫技,源码都会公开,但为了技术交流的互动性,回复超20条后公布源码。今天是第一个,先尝试一下互动效果再决定以后会要不要继续更新,如果大家不感兴趣我就不再浪费时间了。
请根据下图中的效果或附件中的程序,猜测出可能的实现方式都有哪些?
此帖子包含附件:
大小:106.9K |
----------------------------------------------
18114532@qq.com |
作者: |
|
2020/3/21 12:31:08 |
1楼: |
这是可执行程序
----------------------------------------------
18114532@qq.com
|
作者: |
|
2020/3/21 12:45:56 |
2楼: |
我觉得, DevExpress的TdxAlertWindowManager可以实现.
----------------------------------------------
-
|
作者: |
|
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楼: |
透明窗体嵌入桌面。。。。貌似不行,嵌入桌面可以在图标之上,但会在别的窗体之下。就不嵌入桌面了,一个透明窗体跑来跑去,哈哈
----------------------------------------------
-
|
作者: |
|
2020/3/21 14:06:15 |
5楼: |
应该是透明窗体+lable
----------------------------------------------
Delphi爱好者。
|
作者: |
|
2020/3/21 15:42:07 |
6楼: |
找到活动窗体,透明窗体在活动窗体的四个角来回跑 类似于 Office 助手,输入法,此类的吧
----------------------------------------------
武汉天气不好
|
作者: |
|
2020/3/21 23:41:37 |
7楼: |
1 抓图做背景合成图片,用全屏隐藏边框窗口进行显示 2 透明窗口,label显示红色字体
----------------------------------------------
-
|
作者: |
|
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楼: |
写了个例子,几行代码,试试,效果是不是一样。 鼠标去点字体和字体间空白处看看。
----------------------------------------------
-
|
作者: |
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/
|
作者: |
|
2020/3/23 11:01:14 |
14楼: |
XP下实现异性窗体的方法而已。 其实用FireMonkey在XP下就能简单实现这种效果了,而且还很好看。
----------------------------------------------
-
|
|