请问DELPHI里面怎么画出这种效果?

startcn 2000-01-25 09:39:00
怎么才能将一张指定的图象(bmp)的特定部分以透明的方式画出来?
请指教!
...全文
514 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
ahfei 2000-01-26
  • 打赏
  • 举报
回复
agui的解决方法,在一些简单的图中是可以使用的,但如果图像比较复杂,就不适用了.因为
不要透明的部分也可能含有TransparentColor,这样这些点也可能被"透明"掉!
光明山人 2000-01-26
  • 打赏
  • 举报
回复
虽然你已经搞定了,我还是要说几句:

ahfei的方法无疑通用的,但在Delphi中(或BCB也可以)还有一种解法:

TBitmap中有三个属性:Transparent、TransparentColor和TransparentMode,当你设置TransparentColor时,TransparentMode变成tmFixed,当你设置TransparentMode成tmAuto时,TransparentColor取Bitmao最右下角一点的值。

当TBitmap的Transparent为True时,Canvas.Draw( x, y, Bitmap )便以Bitmap.TransparentColor为透明色绘制,就象你在WINDOWS中用“绘图”程序的情形一样。
startcn 2000-01-25
  • 打赏
  • 举报
回复
请问怎么生成AHFEI所说的图AB,图BC?
WHQ 2000-01-25
  • 打赏
  • 举报
回复
ahfei的方法不错呀,我曾经有这种方法做过简单的动画,要是用一个像素一个像素去处理,那速度太慢了
limodou 2000-01-25
  • 打赏
  • 举报
回复
一个像素一个像素的处理,如果你的图形不是很大的画。
对于ahfei所说制作mask图形其实可以使用tbitmap.mask来生成,具体用法请
参见帮助文件。

ahfei 2000-01-25
  • 打赏
  • 举报
回复
这个处理不是特别简单,我在这里说说原理:
一张图A里,如果有一部分要被透明,先要做出这张图的屏蔽图,即一张和原图大小一样,原图要透明部位为黑(clBlack=$0),其余部位为白(clWhite=$FFFFFF)的图B。再加上
背景图C。
1。A and B==〉图ab
2。B xor C==〉图bc
2。ab or bc==〉结果图

用Canvas.CopyRect(设置Canvas.CopyMode)可以完成一系列工作。
startcn 2000-01-25
  • 打赏
  • 举报
回复
好,搞定了!!!
谢谢ahfei!!!
ahfei 2000-01-25
  • 打赏
  • 举报
回复
例如: A and B ==>ab
bmpA.Canvas.CopyMode:=cmSrcAnd;
bmpA.Canvas.CopyRect(MyRect,bmpB.Canvas,MyRect);
这是bmpA中就变成图ab了.
TBitmap.mask实际上是设置一个color,把图像中颜色为此色的点透明处理,不符合要求

5,388

社区成员

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

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