`

对directDraw的一点理解,解决用directDraw显示图片时很模糊的问题

阅读更多

     最近毕设题目就定了,做个围棋游戏,因为以后的工作是写游戏代码,所以就练练DirectDraw,跟着别人的代码写,还很顺利,但后来发现表面中的像素值与用其他工具检测出来的值不一样,图像有变得很模糊,明明想在这个地方画出图,却画到了其他地方,本来想用n个if 来解决,这方法也太笨了,终于花了两天时间找到原因了.用工具检测出画出来的图形被缩小了那么一点点,只有几个像素,我的是4像素和30橡素,原来4是窗口的边框厚度值.30=标题栏高度(26)+窗口边框厚(4)

 

DirectDraw在翻转显示(Flip)中,调用IDirectDrawSurface::Blt方法,将后台表面显示到主表面中,它的第一个参数LPRECT     lpDestRect,lpDestRect的大小要与后台表面的大小一样,如果不一样,图形就变形了,我就是把后台表面大小设置窗口大小,而传入有lpDestRect却是客户区的大小才出的错,差值就成了边框和标题栏了.

 

GetClientRect:取得客户区的大小,不是相对于屏幕

GetWindowRect:取得窗口的位置矩形,相对于屏幕

ClientToRect:传入参数为客户区的矩形,取得客户的位置矩形,相对于屏幕

 

用这些就可以得到标题栏的高度,但与GetSysMetrics(CM_CYCAPTION)返回的值不一样,只是多出了边框厚度

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics