如何在不规则的背景图象上画、擦另一个不规则的图象(200分)

  • 主题发起人 主题发起人 gangwang
  • 开始时间 开始时间
G

gangwang

Unregistered / Unconfirmed
GUEST, unregistred user!
我想在一个有木纹的棋盘上画一个漂亮的棋子,可一直没找到办法,(是不是太苯了):(
 
用有透明色的图象,就可以了
 
最好能给个例子,不胜感谢
 
我手头没有delphi,
但我记得Timage有个透明色的属性,

你的棋子假定是黑,白色,你就可以用红色(当然其他颜色也可以,只要不与

黑,白相同就可以了)作为透明色,做好图片后,放到Timage中,

再显示此Timage就可以了(在棋盘的canvas上)

你试一下,很简单的

 
用编程方法?
网络HTML?
Flash?
...

 
我尝试了,棋子变成黑团:(
 
你留下Email ,我发一个例子给你看!
 
hjdwg@0451.com
 
已经发出
 
CopyMode:=cmSrcAnd;
Draw(x,y,MaskBmp); //先画一个Mask位图
CopyMode:=cmSrcPaint;
Draw(x,y,Bmp); //再画一个实际要画的位图
 
http://www.csdn.net/delphi/
-->图形图像
也许会有帮助.
 
JohnsonGuo的方法好象有道理,但我没尝试过,hustmouse的方法对下面的图片不好使,
不过我已经找到一种办法了,我想考一下各位。

下面是一个黑棋子的图片,各位可以试一下

MIME-Version: 1.0
Content-Type: application/octet-stream; name="154b.bmp"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="154b.bmp"

Qk1eBgAAAAAAADYEAAAoAAAAFwAAABcAAAABAAgAAAAAACgCAADEDgAAxA4AAAAAAAAAAAAAFBMT
ABwbGwAdHBwAQkBAACYlJQA8OzsAubi4AK+urgARDg0AGRYVACUiIQB/fHsAhoOCAKekowARDQsA
Eg4MABEPDgASEA8AKSUjADEtKwAqKCcAKScmAC0rKgBHRUQApaGfAISCgQARDAkAGxgWAGdkYgCY
lZMAEQ4LAB8cGQAXFRMAEhEQACclIwATEhEAFxYVADUzMQCdm5kAcnFwAKGhoAApKioAhYaGADE9
QwAcJy0AHSguAFRhaABUns0AZrntAD9xkQA7aogAKkhbAEFtiAA/aoQAL0xeADJPYAAwS1wANFBh
ACIyPABdfZAAUq/uAFGs6gBLnNUAVa3rAFSs6ABRp+EAVq/sAFSr5QBTqeQAS5TGAFu08ABasewA
W7LsAEiMuwBDg68APXefAF+27gA4aYsAWaXZAGCz6gBOj7sAHDA+ACxKXgAqR1oARW2IAB8xPQBd
kbMAIjM+ABklLQAxSFcAIjA5ACMxOgBumLQAGR8jAFVodQA4PkIARkxQAEKm8ABCpfAAP5jaAEOg
5QA5iMMAOIK7ADZ+tAA1e68APIrDAD6NyAA7h78AN32xADBsmQBGndwARJfVADuDuABOq+4ATKXn
AEaY0wBCjsUAOnilAEye2ABNmtQAU6XfAD98qAA1aI0AM2GCACNCWQApTGcALEthAB4zQgAvTWMA
KUJUABclLwAeLzwAHS05ABspMwAcKjQAGCMrABUcIQBui6EAFBgbACkxNwAVGRwAeIybAGl1fgAd
MkMAIzNAAB4nLgAXISoAKiwuAMjIyADDw8MAvr6+ALy8vACysrIAsLCwAKurqwCoqKgAp6enAJ6e
ngCcnJwAmpqaAJmZmQCXl5cAkJCQAIyMjACKiooAiYmJAIeHhwCFhYUAg4ODAIGBgQB/f38AfHx8
AHl5eQB3d3cAdHR0AHFxcQBvb28AbGxsAGpqagBoaGgAZ2dnAGRkZABiYmIAYWFhAF9fXwBbW1sA
WVlZAFZWVgBVVVUAU1NTAFFRUQBOTk4ATU1NAEtLSwBJSUkARkZGAEVFRQBDQ0MAQEBAAD8/PwA9
PT0AOzs7ADk5OQA2NjYANDQ0ADIyMgAxMTEALy8vAC0tLQAqKioAKCgoACcnJwAlJSUAIyMjACAg
IAAfHx8AGxsbABgYGAAXFxcAFRUVABQUFAATExMAAAAAAP//MwDM/2YA//+ZAP//zABmZv8AZv9m
AGb//wD/ZmYA/2b/AP//ZgAhAKUAX19fAHd3dwCGhoYAlpaWAMvLywCysrIA19fXAN3d3QDj4+MA
6urqAPHx8QD4+PgA8Pv/AKSgoACAgIAAAAD/AAD/AAAA//8A/wAAAP8A/wD//wAA////AP39/f39
/f39/f39/f39/f39/f39/f39AP39/f39/f1Je4GEhoRSe3D9/f39/f39AP39/f39Pn3cEdzc3NwJ
AtQ5Pv39/f39AP39/f1wLA/c3Nzc3NwC1NDQi3D9/f39AP39/S/c3Nzc3Nzc3AIC1NTQzNBp/f39
AP39ciwR3Nzc3AICAgLU1NTQ0MyLdv39AP39fQ/c3NwCAgLU1NTU1NTU0NAUOf39AP1v3NwCAgLU
1NTQ0NDQ1NTU1NTQ1C/9AP0xG9TU1NDQ0NDQ0NDQ0NTU1NTUHzL9AP040NDQzMzMzMzMzMzQ0NTU
1AICG1L9AP0rxMQFBQUFBQUFzMzQ0NDUAgLc3Fr9AP1gubm8wMTExAUFBczM0NDUAtzc3Cz9AP0u
rq6utbzAxMTEBczM0NTUAtzc3Ib9AP07DKOjq7W8wMTEBczM0NQC3NzcEYH9AP1Wog2anqu1vMDE
BczM0NQC3NzcDzX9AP397ZeVmKOxucDEBczQ1ALc3Nzc3C/9AP39XJiVmKOuucDEBczQ1ALc3NwP
fv39AP39/Y0NnqOuucDEzNDUAtzc3Nwsbv39AP39/U6sDKuxvMAFzNAC3Nzc3Nx0/f39AP39/f1F
Xri5wMTM0ALc3NwRLHD9/f39AP39/f39/TXLzNDUAtzcD9w5Tv39/f39AP39/f39/f1FelMsiIeB
e2n9/f39/f39AP39/f39/f39/f39/f39/f39/f39/f39AA==

 
不可能的,只要你的图片中有未使用的颜色,并把它作为透明色,肯定可以完美
的显示出来,不信你把它发给我。

 
其实不要把问题搞复杂,这一类图形擦除、重画、无闪烁问题都要用到双缓冲技术,
也就是你要在内存中保存背景,擦除后再重画出来就行了。
 
to 吕雪松:呵呵,其实你理解错了他的意思,事情不是你想象中的那样。。。
 
谢谢 hustmouse 的热心帮助,问题已经解决了
 
后退
顶部