Cancas重画 一个透明的Canvas如果让它得画我程序里用到一个Canvas在上面自己画图,而且是透明的(下面衬一张图IMAGE)我现在想把第一遍画上去的东西清除掉重新画,否则出现两张图叠在一块,谁也看不清谁。关键是透明的。有大侠指教立刻给分 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 Delphi 6 中,窗体都有一个叫AlphaBlend的属性,可以控制窗体的透明度。其实Windows里面也有相应的实现该功能的API函数(好象未公开^^),不过问题是,你的程序一定要运行在win2k/xp或更高版本的平台下才被支持。TGraphic中有一个Transparent的属性可以控制对某一具体颜色实现透明处理。如果你的图象处理需要很专业的效果,可以考虑用DirectDraw的SetColorKey,通过FX渲染实现之。 楼上兄弟谢谢参与!可能是我表达的不是太清楚,我的问题是,第二遍画之前如何把第一遍画的东西清除,就好象是一个Image对象刚放到一个Form上一样,是透明的。第一遍我已经可以很好的画上去了,可是第二遍画上去如不清除会出现二个图叠加,第二次画上去的东西难以辩认。我要解决的是如何把一个canvas清理成透明。 用一种背景色在CANVAS表面画一个矩形,不就行了吗? 你说的是类似于photoshop中图层的效果吧? 楼主 你的Canvas是谁的?如果是Image的那就擦不掉了,除非在画之前保存背景色然后再用保存的颜色去覆盖画上的东西,不过有点不现实 如果是Form的Canvas就好说了直接Refresh就行了 是一个SHAPE的,IMAGE的也可以,只要能实现 第一次画之前首先将可能画的区域保存到CanvasBack:CanvasBack.CopyRect(R,Image1.Canvas,R);第二次画之前先恢复这个区域:Image1.Canvas.CopyRect(R,CanvasBack,R);—————————————————————————————————宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。————————————————————————————————— 在一个Active Form里创建一个工作线程,如何让Form接收到这个工作线程发送的消息? 关于刻录程序的问题? ExpressQuantumGrid 5谁安装了 在intraweb中用js如何访问窗口上的控件?最好有demo 请问关于数据存储及打印的问题,up者有分 关于nil与sender的问题? 明天到公司面试大家给点意见!!! 怎样从Form1中Show出From2,能不能详细点!!我是新手,我试过,但不行,好像还要在什么地方申明什么东东? 关于小数的几个问题。(ngyxh) 快口就有分!!! 菜鸟提问:大家救命,一个登录的问题 如何消除曲线上的锯齿??
TGraphic中有一个Transparent的属性可以控制对某一具体颜色实现透明处理。如果你的图象处理需要很专业的效果,可以考虑用DirectDraw的SetColorKey,通过FX渲染实现之。
可能是我表达的不是太清楚,我的问题是,第二遍画之前如何把第一遍画的东西清除,就好象是一个Image对象刚放到一个Form上一样,是透明的。
第一遍我已经可以很好的画上去了,可是第二遍画上去如不清除会出现二个图叠加,第二次画上去的东西难以辩认。
我要解决的是如何把一个canvas清理成透明。
CanvasBack.CopyRect(R,Image1.Canvas,R);
第二次画之前先恢复这个区域:
Image1.Canvas.CopyRect(R,CanvasBack,R);—————————————————————————————————
宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
—————————————————————————————————