15,978
社区成员
发帖
与我相关
我的任务
分享

请明示,谢谢。
[/quote]
背景没用图片直接用的背景色吗?
那 UIRender 中的 DrawColor 也要重新实现
UIRender 中我只重新实现了 DrawText,对应的新函数为 DrawTextUnderLayered , 可以参考一下
原因是这样的,采用 Layered 分层窗口之后,直接在 hdc 上调用 drawText , drawRect 等 api 是画不上去的,只会形成一个透明的区域。需要新建一个位图,在新位图上画,然后调用 AlphaBlend 将位图渲染到 hdc 上,具体例子参考 DrawTextUnderLayered 函数。目前我只实现了 layered 窗口对应的 drawText 函数,其他函数实现起来应该是类似的
[/quote]
用了背景图片,skin文件夹没改过。 不晓得哪里出的问题。 WM_PAINT分支只执行了if( m_bAlphaBackground){...}里面的内容,后面的都不需要了吧,我加断点,后面的都没执行到。我再看看,不行就放弃了~~~呵呵
[/quote]
测试了一下午,这个问题终于解决。
原来问题出在UIRender.cpp的DrawImage()函数中,SetStretchBltMode()函数指定位图的拉伸模式,楼主的代码指定的是COLORONCOLOR,原先svn代码中指定的是HALFTONE,个人猜测是UpdateLayeredWindow()函数的调用会重新计算需要渲染的图片像素信息,所以就不能保留原先的像素值。
希望有大牛可以接着详细说明下。
[/quote]
兄弟好牛叉! 谢谢。[/quote]
不知道有没有人测试Edit控件,点Edit控件时会点到后面的窗体上,透气儿。。。
请明示,谢谢。
[/quote]
背景没用图片直接用的背景色吗?
那 UIRender 中的 DrawColor 也要重新实现
UIRender 中我只重新实现了 DrawText,对应的新函数为 DrawTextUnderLayered , 可以参考一下
原因是这样的,采用 Layered 分层窗口之后,直接在 hdc 上调用 drawText , drawRect 等 api 是画不上去的,只会形成一个透明的区域。需要新建一个位图,在新位图上画,然后调用 AlphaBlend 将位图渲染到 hdc 上,具体例子参考 DrawTextUnderLayered 函数。目前我只实现了 layered 窗口对应的 drawText 函数,其他函数实现起来应该是类似的
[/quote]
这样貌似会导致文字的对齐样式align失效啊,楼主有好的解决方法么?一个个的用textpadding不爽啊,
