eyes请进,各位图形高手请进!(200分)

  • 主题发起人 主题发起人 tqz
  • 开始时间 开始时间
T

tqz

Unregistered / Unconfirmed
GUEST, unregistred user!
在系统为16位色下,Delphi显示透明的图片有问题,或者完全不透明,或者变成一个黑白图片:(不同色彩数的图片现象还不一样.我看过源代码,太烦了:(
各位高手有什么高见吗?
 
跟一下:)
另:另一张帖子里tqz大侠有个SendInput,好象没见过,指教指教?谢谢:)
 
没碰到类似情况,我现在是16bitx800x600, 没有任何问题.
 
To CJ:
关于SendInput,请参见MSDN:)我也是刚查到的.
BTW:你的MP3Man 快了:)
To cAkk:你可以放一个Image到Form上,然后load 一个256色的图片,
然后设置为Transparent = true,然后就%^#&$%^#%$#
不过,24真彩的图片就没问题.
 
确实有这个问题.:-(

应该和windows系统有关.

 
那就把图片再存一次,存成真彩色.
 
有道理啊,我现在就是这么做的.但是没有人能够根本解决吗?悬赏200...
 
是不是别的软件也这样呢? 如果也是,恐怕没什么办法.
 
调色板颜色偏差的关系。
若bmp为256色,在256色的机器上显示正常,
若bmp为16bit色,在256色的机器上不能显示透明,而且速度奇慢。

你在16bit的机器上显示图片不正常,也许你的bmp是256色的。

解决办法目前尚无(至少我不知道):-(。你应该尽量使bmp的发色数和你
机器的颜色数一致。16bit色是流行配置。
 
说了半天,还是没有办法. :-(
 
呵呵, 原来就这问题呀.
太容易解决了.
加载图片到你定义的一个bitmap中, 比如:
1. bitmap.LoadfromFile('...'); // 假设该图片为256色
2. bitmap.PixelFormat := image.picture.bitmap.pixelformat ; // image为你的底图
// 这句是关键, 将前景图设成和
// 和背景一样的颜色数.
3. image.picture.bitmap.brushcopy(arect, bitmap, rect(0,0,bitmap.width, bitmap.height), bitmap.canvas.pixels[0, bitmap.height - 1]);
// 透明色也可以用bitmap.transparentcolor, 不过我发觉有时bitmap.transparentcolor
// 没值. 所以用pixels保险
 
还不如保存成真彩色省事. :-(
 
针对你的问题, 用image load一幅256色图之后,
image.picture.bitmap.pixelformat := pf24bit;
然后再设置transparent, 肯定就透明了.
 
这个方法算比较简单的了. 恐怕没有再简单的了吧?
 
Eyes,你的第一个方法我没试过,第二个方法我可试过。我的图片是用PhotoShop做
的,就是在photoShop里面升到真彩也没有用,只有用画笔重新填充过透明色后才能
透明。

 
请继续讨论或结束问题
 
多人接受答案了。
 

Similar threads

D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
2K
DelphiTeacher的专栏
D
D
回复
0
查看
1K
DelphiTeacher的专栏
D
S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
后退
顶部