内存场景背景

mfkinfo 2009-03-22 03:18:37
在内存场景中做半透明图片后再加入picturebox,图片总是变暗,疑是内存场景背景色的问题,特有此问,还请大家帮助。
使用setbkcolor函数无效,查msdn得知,它对绘图区域无效,仅用于填充阴影刷子、虚线画笔以及字符(如背景模式为OPAQUE)中的空隙。
...全文
139 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2009-03-30
  • 打赏
  • 举报
回复
那只是自动调用了绘图而已,自建 hDC 就要自己做了。
mfkinfo 2009-03-30
  • 打赏
  • 举报
回复
看来大家对赵老师的答案没有异议,这下放心了。
感谢诸位的帮助。结帖了。
mfkinfo 2009-03-29
  • 打赏
  • 举报
回复
赵老师的解释切题,但我实在想知道内存场景的背景色只能画上去吗?没有像picturebox.backcolor=rgb()一样有什么api函数直接设置么?
只是想确认一样,请诸位老师不要着急啊。我这个学生反应慢得很,没有办法,唉。
Tiger_Zhao 2009-03-27
  • 打赏
  • 举报
回复
半透明就是按照一定的比率混合背景和图片,所以背景是黑的整体感觉就暗,背景是白的整体感觉就亮。
画背景是必须的。
laviewpbt 2009-03-27
  • 打赏
  • 举报
回复
晕,直接说现象不知道你啥意思,没点代码。


是这个问题吗?

 如果AlphaFormat字段为0,源位图中的所有像素使用同样的常量alpha值,即SourceConstantAlpha字段中的值,该值实际上是0和255,而不是0和1。这里0表示完全透明,255表示完全不透明。目标像素以255-SourceConstantAlpha值作为alpha值。
  如果AlphaFormat字段的值是AC_SRC_ALPHA,源设备表面的每个像素必须有各自的alpha通道。即,必须是32-bpp的物理设备上下文,或是选中了32-bpp DDB和DIB段的内存设备上下文。这些情况下,每个源像素有4个8位通道:红、绿、蓝和alpha。每个像素的alpha通道和SourceConstantAlpha字段一起用于把源和目标混合起来。实际用于计算的运算式如下:
mfkinfo 2009-03-26
  • 打赏
  • 举报
回复
是函数AlphaBlend的作法问题,若直接作用于picturebox处理半透明效果会逐渐淡化并变白,而在内存场景中处理时却是变暗。
我怀疑是内存场景背景色的问题,但不知道如何直接设置,目前使用FillRect填充颜色后加图来解决的,不知道有没有其它方法。还请诸位帮助一下——尤其希望获得laviewpbt兄的指点。
laviewpbt 2009-03-23
  • 打赏
  • 举报
回复
没有一点代码,无从诊断。
mfkinfo 2009-03-23
  • 打赏
  • 举报
回复
路过的仁兄:
即使没有其它办法,也烦请顶一下呀。您不会让我把分砸在自己手里吧?
mfkinfo 2009-03-22
  • 打赏
  • 举报
回复
看来赵、陈、东方之珠等几位高手老师周末是不上网的,只好等下周了。
mfkinfo 2009-03-22
  • 打赏
  • 举报
回复
实验成功一法:FillRect
凭空多出许多代码,不知道还有没有其它方法可行,期待高手的帮助。
另外,随便问一个很菜的问题,除开msdn以外,还可以从何处得到GDI函数和DirectX9.0函数的帮助文件。

1,488

社区成员

发帖
与我相关
我的任务
社区描述
VB API
社区管理员
  • API
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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