淡入淡出式滚动字幕(1分)

  • 主题发起人 Another_eYes
  • 开始时间
A

Another_eYes

Unregistered / Unconfirmed
GUEST, unregistred user!
效果: 透明背景的一个滚动字幕(文字或图象, 可以直接显示于Desktop之上), 滚动
过程中, 文字或图象逐渐由透明变成完全显示, 又逐渐变成透明而消失.
滚动方向: 上->下, 下->上, 左->右, 右->左
任意角度文字, 文字或图象本身可以具有gradient的face(任意方向gradient, 可以定义
光源点)
设计思路:
主要通过window的region实现.
1. 取得前景的region--FaceRgn:
文字: 用drawtext画到一幅bitmap上(背景颜色为font.color的反色, 并记为透明色),
以后处理与图象处理相同.
图象: 根据透明色生成非透明色部分的region.
2. 构筑3D效果中边界部分的region--BorderRgn:
for i := 1 to borderwidthdo
begin
用ExtCreateRegion复制FaceRgn.
offsetrgn
combinergn(...,RGN_OR)
end;
combineRgn(...., RGN_DIFF).

3. 生成前景的face--FaceEffect:
create一幅与背景同样大小的bitmap
文字: 用gradient算法充填FromColor, ToColor
图象: gradient充填与图象各点本色结合生成新颜色值
4. 生成3D Border的Face--BorderEffect:
同3.
只是起始和终止颜色不同.
5. 生成淡入淡出时的透明度(0%-100%)--FaceMask:
create与背景同样大小的bitmap
用gradient算法充填0-100的颜色(代替百分比)
6.合成最终效果图:
根据FaceMask结合背景图,faceEffect -> TargetFace
根据FaceMask结合背景图,borderEffect -> TargetBorder
7. 开始显示:
OffsetRgn(facergn, StartX, StartY);
OffsetRgn(BorderRgn, StartX, StartY);
Wait OnTimer:
SelectClipRgn(TargetDC, FaceRgn);
BitBlt(TargetDC, TargetX, TargetY, TargetWidth, TargetHeight,
TargetFace.Canvas.handle, 0, 0, SRCCOPY);
SelectClipRgn(TargetDC, BorderRgn);
BitBlt(TargetDC, TargetX, TargetY, TargetWidth, TargetHeight,
TargetBorder.Canvas.handle, 0, 0, SRCCOPY);
SelectClipRgn(TargetDC, 0);
OffsetRgn(FaceRgn, OffsetX, OffsetY);
OffsetRgn(BorderRgn, OffsetX, OffsetY);
Wait Next OnTimer ....
原代码:
太长. 不好贴. (也没来得及调试)
改进:
我看了大量的例子, 发觉实现透明很少用Region(除了做不规则form)的, 都是用几幅位图
通过mask方式实现. 可以认为用bitmap比用Region快多了?(region占用的资源并不比
bitmap多)
希望看到用bitmap通过mask方式实现上述效果的例子.
大家多提提建议.
 
兄台,辛苦了。谢谢你!
 
eYes:没有这方面经验能与你讨论,希望能共享你的特效!
 
menxin, 没问题.
我最近在做文字的雾化阴影效果控件. 单色背景下没有问题, 现在我要试的是透明背景下雾化阴影
是否可行. 主要思路也是region. 暂时还不知道效果如何.
这几个控件属于我正开发的一套显示特效控件包. 等这个包完成了给你一份.
 
eYes,我来了/
 
eYes:
我对你的显示控件包很有兴趣,完成了别忘了分享一份!(xiekun@netease.com)
 
eYes:
我对你的显示控件包也很有兴趣,完成了别忘了分享一份!
E-MAIL: pount@pdns.jsitec.edu.cn
 
Eyes :
我也要一份 lujean@263.net
 
eYes:发我一份?
 
还有我! 可不可以?
<a href="mailto:c.k@263.net>发一份吧!</a>
 

Similar threads

I
回复
0
查看
713
import
I
I
回复
0
查看
923
import
I
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
顶部