`

对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)返回的值不一样,只是多出了边框厚度

 

分享到:
评论

相关推荐

    C#使用DirectDraw读取并显示图像

    首先,我们需要理解DirectDraw的基本概念。DirectDraw允许开发者直接访问显卡硬件,提高图像渲染速度。在C#中,由于.NET Framework不直接支持DirectX API,我们需要借助Windows API调用来使用DirectDraw。这通常通过...

    Qt+DirectDraw实现

    学习并实现Qt+DirectDraw,不仅需要对Qt的事件处理和绘图机制有深入理解,还需要熟悉DirectDraw的API和工作原理。通过这样的结合,可以在开发高性能的2D图形应用时,充分利用硬件加速的优势,提供流畅的用户体验。

    DirectDraw中文手册

    9. **兼容性和移植性**:由于DirectDraw是旧版DirectX的一部分,手册会讨论如何处理不同版本的DirectDraw之间的兼容性问题,以及如何将代码迁移到更新的DirectX组件,如Direct3D。 10. **示例代码**:通常手册会...

    DirectX教程 DirectDraw

    同时,通过阅读给定的"DirectX教程",可以更深入地理解DirectDraw的工作原理和应用场景,从而为后续的3D图形编程或游戏开发打下坚实基础。通过不断地练习和实践,初学者可以逐渐掌握DirectDraw的魅力,并逐步提升...

    DirectDraw的学习笔记

    对于经验丰富的开发者,这些笔记同样具有参考价值,特别是在理解DirectDraw的关键机制和解决实际编程问题方面。随着DirectX的版本更新,DirectDraw已被Direct3D在许多领域所取代,但DirectDraw在某些特定应用中依然...

    directdraw device dll

    DirectDraw Device DLL是Windows操作系统中的一个重要组件,主要与图形硬件加速功能相关。它是一个动态链接库(DLL)文件,...同时,对于开发人员来说,理解DirectDraw的工作原理和API调用对于调试这类问题至关重要。

    directdraw中文手册

    对于初学者和有经验的开发者来说,都是一个宝贵的参考资料,能够深入理解DirectDraw的工作原理和实际应用。 在使用"ddraw.chm"文件时,通常这是一款帮助文档,采用CHM(Compiled Help Manual)格式,是微软开发的...

    DirectDraw

    DirectDraw是Microsoft Windows API的一部分,主要用于加速2D图形的绘制,尤其是在游戏和视频播放等对性能要求较高的场景中。在Windows 95之后的版本中引入,DirectDraw为应用程序提供了低延迟、硬件加速的图形渲染...

    两个小时学会DirectDraw编程

    DirectDraw主要应用于游戏开发、视频播放、图像编辑等领域,能够减少CPU对图形处理的负担,提升用户体验。 二、DirectDraw的核心概念 1. **设备上下文(Device Context, DC)**:DC是Windows图形系统中的一个重要...

    很经典的DirectDraw教程 想学游戏编程的必备教程

    DirectDraw是微软Windows API的一部分,主要用于2D图形加速和游戏开发。...尽管DirectDraw在现代DirectX版本中已被Direct3D取代,但对于理解底层图形原理和早期游戏开发历史,仍然具有很高的学习价值。

    directdraw副显卡输出

    7. **呈现和翻转**:完成绘制后,使用DirectDraw的呈现功能将内容从内存中的表面显示到屏幕上。翻转操作会将新的图像缓冲区与屏幕上的旧图像交换,实现视觉更新。 8. **错误处理**:如果程序运行不了,可能是因为不...

    DirectDraw下旋转图片的Demo和源代码

    通过阅读和理解这些代码,开发者可以更好地掌握DirectDraw下图片旋转的实现方法,这对于游戏开发和其他2D图形应用是极其有价值的。 总之,DirectDraw旋转图片涉及到DirectDraw对象的创建、位图加载、几何变换、...

    DirectDraw飞机小游戏源码

    这个"DirectDraw飞机小游戏源码"提供了一个经典的案例,让我们深入理解DirectDraw在游戏编程中的应用。 首先,`A10.001`可能是一个程序资源文件,通常包含游戏中的图片、声音或其他媒体资源。`SCRIPT1.APS`可能是一...

    win7禁用和开启DirectDraw加速批处理

    5. **显示信息**:最后,脚本会显示一个消息框,告知用户DirectDraw加速的状态是否已成功改变,并可能提供重启计算机的建议,因为某些更改可能需要重启后才能完全生效。 在使用这个批处理脚本前,务必谨慎,因为...

    directdraw显示YUV格式

    熟悉DirectDraw的API和YUV编码原理,将帮助你更好地理解和解决这些问题。同时,了解现代DirectX或其它图形库如OpenGL,它们提供了更高级的功能和更好的性能,但基本的YUV处理和显示原理仍然适用。

    DIRECTDRAW 读取24位位图出问题 请高手看看

    在Windows游戏编程中,直接绘图(DirectDraw)是一个常用的技术,用于高效地处理图形和图像数据。...记住,解决问题的关键在于理解DirectDraw的工作原理和位图的内部结构,以及熟练运用Windows API。

    DirectDraw中文手册.chm

    DirectDraw是Microsoft DirectX的一部分,它是一个图形应用程序编程接口(API),允许程序员进行低级...尽管如此,对于理解早期DirectX图形编程或者对经典游戏开发感兴趣的人员,DirectDraw仍然具有重要的学习价值。

    ffmepg DXVA,DirectDraw

    总之,要使FFmpeg在4.0版本中成功调用DXVA和DirectDraw,需要对FFmpeg和Windows图形硬件加速技术有深入的理解,并进行相应的代码分析和调试工作。这是一个既挑战性又充满乐趣的过程,通过解决这个问题,你将更加熟练...

    direct draw 绘图Demo 源码

    源码分析可以帮助初学者理解Direct Draw的工作原理,以及如何利用它来优化2D图形的性能。NChess这个文件名可能是指该Demo应用是一个基于Direct Draw的国际象棋游戏,展示了如何用这个API创建动态的2D游戏界面。

    directdraw基本程序

    在创建一个 DirectDraw 应用程序时,首先要进行的是初始化 DirectDraw。这通常包括以下几个步骤: 1. **创建 DirectDraw 实例**:首先,我们需要通过调用 `DirectDrawCreate` 函数来创建一个 DirectDraw 对象。这个...

Global site tag (gtag.js) - Google Analytics