`
tubaluer
  • 浏览: 1445978 次
文章分类
社区版块
存档分类
最新评论
  • sblig: c / c++ 是不一样的都会输出 100
    j = j++

windows程序设计之GDI简介

 
阅读更多

最近在做一个有关激光笔的小项目,和学长们一起做的。里面还有硬件成份,现在因为才开始做,我主要做软件上面的东西,当然技术含量是很少的抓狂···诶,学了一年左右了,水平还是没很大长进啊~~~大哭刚刚C入门,SDK也只能说勉强算是入门了吧。。。项目里面有一部分是要绘制出来鼠标的移动轨迹的,我就去重新看了下GDI,发现自己以前没写过这些东西,印象就是不深刻啊,于是就温习了下。重新看了下<<windows程序设计>>和<<API函数,接口编程实例>>,ctrl+c和ctrl+v出来下面个实验品,然后做了些笔记,我还是记得学长讲得那句话:博客就是用来记录自己成长的地方。无论有什么学到的,都可以写上来,无论含量高不高,总能在自己以后有一天需要的时候想起来,并且找到,这大概和老师说的好记性不如让笔头差不多吧~~~

下面是自己一些简单的总结:

windows GDI绘图
Graphics Device Interface:图形设备接口
GDI是GraphicsDeviceInterface的缩写,含义是图形设备接口,它的主要任务是负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出。
在Windows操作系统下,绝大多数具备图形界面的应用程序都离不开GDI,我们利用GDI所提供的众多函数就可以方便的在屏幕、打印机及其它输出设备上输出图形,文本等操作。GDI的出现使程序员无需要关心硬件设备及设备驱动,就可以将应用程序的输出转化为硬件设备上的输出,实现了程序开发者与硬件设备的隔离,大大方便了开发工作。

1.资源使用
// 初始的颜色
BYTE bRed = 0;
BYTE bGreen = 0;
BYTE bBlue = 0;
// 笔的颜色 正黑
COLORREF cPen = RGB(bRed, bGreen, bBlue);
//画笔的设置
HPEN CreatePen(
__in int fnPenStyle,
__in int nWidth,
__in COLORREF crColor
);
HPEN hpen;
hpen = CreatePen(PS_SOLID, 10, cPen);//画笔基本属性

//画刷的设置
HBRUSH hbrush;
COLORREF cBrush = RGB(233, GetGValue(cPen),255);
hbrush = CreateSolidBrush(cBrush);
// 释放资源
DeleteObject(hpen);
DeleteObject(hbrush);


2.获取DC。获取了DC就相当于获取了绘画的资格。
HDC hDC = GetDC(hWnd);//参数是NULL时获取的是整个显示器的DC,若是句柄就是指定窗口的DC。


3.将DC设置成对象目标句柄。将图形对象选入DC中,这样DC中原有的类型图形对象就会被新的对象替换。
SelectObject(hDC, hpen);
SelectObject(hDC, hbrush);
这样绘画的时候就可以改变默认的DC属性。


4.绘画区域的变化
GetClientRect(hWnd, &rect);这里获取的是客户区域的大小,是以客户区左上角为坐标原点进行创建的。因此比如在处理WM_MOUSEMOVE等鼠标消息的时候,传进来的lParam参数中包含的坐标也是相对于客户端的。要想转化成屏幕坐标可以用下面的方法:
//转换窗口有效区为屏幕座标
POINT point;
point.x = 0, point.y = 0;
ClientToScreen(hWnd,&point);
你要是想把光标限制在客户区内,可以这样:
//将光标限定在窗口有效区内
rect.top = point.y;
rect.left = point.x;
rect.bottom += rect.top;
rect.right += rect.left;
ClipCursor(&rect); //rect一定要是屏幕座标
下面是获取屏幕坐标的函数
POINT pt;
GetCursorPos(&pt);
这里获取的坐标就是相对屏幕左上角的坐标。若是要转化成客户区坐标可以用
ScreenToClient(hWnd,&point);


5.绘制线条
移到指定的点


下面是我修改的一个绘制鼠标轨迹的小程序


最近的时间越来越紧啊···专业课越来越难,自己课余学计算机的时间也越来越少,诶····真是后后悔自己没去计算机专业额····

呼呼,,,,不过事在人为,努力就好!昨天看到一句比较好的话:一个优秀的程序员:勤奋+执着!我看着很有感触,有时

时觉得自己花那么多时间面对代码,是否值得···不过我想有付出就会有回报的!!

分享到:
评论

相关推荐

    GDI+图像程序设计(PDF & 源码 -电子工业出版社)

    本书是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。 本书适合于开发GDI+图形应用程序的初、中级程序员...

    Windows程序设计GDI计算器

    简单的GDI图形界面计算器,主体由窗口建立,按钮以及显示区均由GDI画出,编程环境VS2010

    Windows 程序设计(第5版)(上、下册)--详细书签版

    他在《Microsoft Systems Joumal》1986年 12月号上发表了第一篇关于 Windows程序设计的杂志论文。从 1986年到 1995年,他为《PC Magazine》撰写“Environments”专栏,给读者介绍了Windows和OS/2程序设计的许多方面...

    C语言 Windows程序设计,使用GDI自绘按钮、编辑框、贴图小练习

    C语言 Windows程序设计,使用GDI自绘按钮,编辑框,贴图小练习。 这些雕虫小技,在VB里面不知道有多少的简单。 在这里用C语言来写,是这么麻烦,这么麻烦。 真不知道有什么好处? 正事不干,专们喜欢干这种鸟事,...

    C#GDI+图形程序设计源码

    15.1 设计交互式GUI应用程序 15.2 绘制具有形状的窗体和Windows控件 15.3 为绘制的图像添加版权信息 15.4 从流或数据库读取及写入图像 15.5 创建自绘制的列表控件 总结 附录A .NET中的异常处理

    GDI+图形程序设计_Mahesh_Chand

    《GDI+图形程序设计》GDI+是新一代的...《GDI+图形程序设计》是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。

    GDI+图形程序设计.7z

    GDI+图形程序设计》GDI+是新一代的图形...《GDI+图形程序设计》是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。

    Windows程序设计(第2版)王艳_源代码

    书籍目录: 第1章 Windows程序设计基础   1.1 必须了解的内容   1.2 VC++的基本使用  1.3 本书推荐的编程环境  1.4 代码的风格  第2章 Win32程序运行原理   2.1 CPU的保护模式和Windows系统  2.2 ...

    GDI+程序设计.pdf

    Windows下GDI+程序设计手册。对于使用的初学者有很多帮助。

    《Windows程序设计》中文chm版

    …………………… WINDOWS程序设计选项 …………………… 编写第一个WINDOWS程序 2.Unicode简介 …………………… 字符集简史 …………………… 宽字符和C …………………… 宽字符和WINDOWS 3. 窗口和消息...

    windows 程序设计

    为说明Windows程序设计的多种技术,本书提供了许多范例程序。这些程序使用C语言撰写并原原本本的使用Windows API来开发程序。我将这种方法称作「古典」Windows程序设计。这是我们在1985年为Windows 1.0写程序的方法...

    windows 程序设计中文版

    第1章 起步 1.1 Windows环境 1.1.1 Windows简史 1.1.2 Windows的方方面面 1.1.3 动态链接 1.2 Windows编程选项 1.2.1 API及内存管理模式 1.2.2 语言选择 1.2.3 编程环境 1.2.4 API文档 1.3 你的第一个Windows程序 ...

    windows程序设计第五版 chm 版本

    《Windows程序设计(第5版 珍藏版)》是一本经典的Windows编程圣经,曾经伴随着近50万Windows程序员步入编程殿堂,成长为IT时代的技术精英。 作为Windows开发人员的必备参考,涵盖基础知识和中高级主题,全面地介绍了...

    GDI+图形程序设计_中文版_[美] Mahesh Chand ,文中用C#示例

    《GDI+图形程序设计》GDI+是新一代的...《GDI+图形程序设计》是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面。

    windows程序设计 windows程序设计

    …………………… WINDOWS程序设计选项 …………………… 编写第一个WINDOWS程序 2.Unicode简介 …………………… 字符集简史 …………………… 宽字符和C …………………… 宽字符和WINDOWS 3. 窗口和消息...

    Windows程序设计中文版适合Windows编程人员

    主要功能:Windows程序设计中文版里包含GDI,鼠标,键盘消息各种处理,是Windows编程人员的必备查询手册。

    GDI+图形程序设计PDF+源码

    GDI+图形程序设计+源码 + PDF 《GDI+图形...《GDI+图形程序设计》是一本为.NET开发人员讲授如何编写Windows和Web图形应用程序的专著,书中全面介绍了GDI+和Windows图形程序设计的基本知识和GDI+图形程序设计的各个方面

    windows程序设计(第五版)

    mk:@MSITStore:E:\新建文件夹\Windows程序设计\Windows程序设计(CH).chm:... 2006-5-5 显示和打印 DIB和DDB的结合 16. 调色盘管理器 使用调色盘 调色盘动画 调色盘和真实世界图像 DIB处理链接库 17. 文字和...

    Windows程序设计笔记(1,2,3)

    近有幸拜读了Charles Petzold的大作《Windows程序设计》,真有种相见恨晚的感觉。这是一本1999年出版、主要讲述在Windows平台下如何使用C语言调用API函数进行软件开发的老书。在当今RAD工具充斥市场的今天,该书依然...

Global site tag (gtag.js) - Google Analytics