如何用StretchDIBits模拟缩略图周围的阴影?
我现在正在编写一个图像查看器,它用于查看缩略图。 由于它很丑,我决定在缩略图周围画阴影。
有背景颜色。 我正在使用 StretchDIBits 在缩略图的位置绘制阴影图像。 但它覆盖了背景颜色真的很烦人...... 当背景是白色时,它看起来很完美。 但如果背景不是白色,则有白色边框。
所以我使用AlphaBlend,首先将阴影图像绘制到DC上,然后使用AlphaBlend到背景上。 但是,我仍然可以看到白色边框。
无论背景是什么,有什么理由要生成完美的阴影吗?
I am now writing a image viewer, It is used for view thumbnails.
As it is ugly, I decide to draw shadow round thumbnail.
There is background color.
I am using StretchDIBits to draw a shadow image at the location of thumbnail.
However it is really annoying that it cover the background color...
When the background is white, it looks perfect.
but if the backgound is not white, it has a white border.
so I make use of AlphaBlend, first draw the shadow image onto a DC, then use AlphaBlend onto the background. However, I can still see the white border.
Is there any why to generate a perfect shadow , no matter what background is.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您确定阴影位图包含 Alpha 通道的 Alpha 值吗? Iow:您如何创建阴影位图:您是通过模糊透明目标或白色目标上的正方形来实现的吗? 如果是第一个,则阴影位图包含 Alpha 通道,并且应该与背景很好地混合。 如果是第二种,您的阴影位图包含白色片段,因此会将白色与背景混合。
Are you sure the shadow bitmap contains alpha values for the alpha channel ? I.o.w.: how are you creating the shadow bitmap: are you doing that by blurring a square on a transparent target or a white target? If the first, the shadow bitmap contains an alpha channel and should blend fine with the background. if the second, your shadow bitmap contains white fragments and thus will blend that white with the background.