Win32中GDI+应用(一)】的更多相关文章

显示位图,你应该使用GDI+里面的Bitmap类或者Image类,这两个类都提供了方法从硬盘上的一个文件打开文件,创建相应的内存中的位图对象的工作.然后你可以使用Graphics类的DrawImage方法来绘制该位图.下面的代码初始化GDI+,显示一个打开文件对话框并且创建Bitmap对象,显示位图: GdiplusStartupInput input; ULONG_PTR gdiPlusToken; if(GdiplusStartup(&gdiPlusToken,&input,NULL)…
在我理解看来,Graphics是一个device context和你的drawing conetent之间的一个中介.它存储了device context的相关属性,以及drawing content的属性.这样,它就能用自己的方法把drawing content“映射”到device content 之上.GDI中的绘图工作是直接在device context之上进行的.在GDI—+中,你因该在device context之上再建立一个graphics,然后调用graphics的相关方法完成绘…
GDI+, Microsoft Graphics Device Interface Plus, 是微软在继GDI(Microsoft Graphics Device Interface)后推出的图形编程接口,它捅GDI一样隐藏了下层显示设备.打印设备的具体细节,提供给用户一个统一的图形接口,支持基本的位图处理.显示,矢量元素(贝塞尔曲线等)绘制,基本的打印处理.它比GDI提供了更多的功能,诸如渐变填充,基本的位图格式编解码等.本文尝试介绍我在学习GDI+中的一些体会,顺便做一些提纲型的笔记. G…
在GDI里面,你要想开始自己的绘图工作,必须先获取一个device context handle,然后把这个handle作为绘图复方法的一个参数,才能完成任务.同时,device context handle是同一定的绘图属性绑定在一起的,诸如画笔.话刷等等,你必须在画线之前创建自己的画笔,然后使用selectObject方法把这个画笔同已经获取的device context handle绑定,才能使用LineTo等方法开始画线.不然,你画出来的线使用的是默认的属性:宽度(1),颜色(黑色).但…
GDI+提供了GdiplusStartup和 GdiplusShutdown 函数来进行初始化和完成清理工作.你必须在调用其他的GDI+函数之前,调用GdiplusStartup函数,在完成GDI+工作后调用GdiplusShutdown .具体的可以看下面的MSDN上的例子: #include <windows.h> #include <gdiplus.h> #include <stdio.h> using namespace Gdiplus; int main()…
关于子类化的话题虽然有些旧,但它至今仍然不失为一种开发Windows的强有力技术,在MFC的内核.甚至.NET的内核中都离不开它,希望本连载能对Windows开发的爱好者有所帮助. 原文标题:Safe Subclassing in Win32作者:Kyle MarshMSDN技术组 点击此处查看原文 摘要 本文描述了Win32环境下的子类化,描述了它是如何工作的以及实现安全的子类化必须要遵循的规则.本文涵盖了实例子类化和全局子类化.而超类化则作为一个全局子类化的可选替代方案被介绍.从Win16到…
原文链接: 1.用多线程方法实现在MFC/WIN32中调用OpenGL函数并创建OpenGL窗口 2.Windows MFC 两个OpenGL窗口显示与线程RC问题…
WTL中GDI+支持资源文件加载 分类: WTL WTL gdi+ gdi+2013-04-22 17:16 78人阅读 评论(0) 收藏 举报 WTLGDI+c++ 今天遇到一个小问题困扰了.就是GDI+加载资源位图的问题.由于把一些内容编译到exe程序中去,上网查找了一下,经验总结如下: 1. GDI+ 一定要使用UNICODE,所以 stdafx.h 中要先设置 #define UNICODE 2. 位图Bitmap可以直接加载 Bitmap * tmpBitmap = Bitmap::F…
在Windows应用程序中,只要进行绘图,就要使用GDI坐标系统.Windows提供了几种映射方式,每一种映射都对应着一种坐标系.例如,绘制图形时,必须给出图形各个点在客户区的位置,其位置用x 和y两个坐标表示,x 表示横坐标,y表示纵坐标.在所有的GDI绘制函数中,这些坐标使用的是一种“逻辑单位”.当GDI函数将结果输出送到某个物理设备上时,Windows将逻辑坐标转换成设备坐标(如屏幕或打印机的像素点).本文讨论了图形环境中的各个映射模式,包括它们是什么,怎么工作的,以及它们真正的含义. 一…
Windows 下 的静态库和动态库 一.静态函数库(Lib) 1. 静态函数库的制作(C/C++) —— 打开新建项目,然后选中Win32项目,接着在创建项目中选择 Lib,再接着将函数.实现功能的代码写入文件中,最后点击生成 目标文件 (.lib文件) —— 生成的目标文件(Lib)默认在解决方案中的Debug目录下 2 . 静态函数库的调用 在Win32项目中调用步骤如下: i. 声明调用目标函数 ii. 给链接器 指定链接库的 类型.库相对位置   —— #pragma comment(…
最近在用win32写<visual C++经典游戏程序设计>中的扫雷游戏,在写到鼠标点击雷区的时候用到了SetCapture,和ReleaseCapture这对系统函数. 那么为什么需要用到鼠标捕获的函数呢? 我错误地认为鼠标的跟踪可以由Point进行传值处理,就能实现我想要的功能,但是我却疏忽了如果我的鼠标按下的时候把鼠标移除窗口外面的情况,这种情况的时候鼠标是在外面的,那么当我把鼠标弹起的时候鼠标的位置就不在扫雷窗口里面了,因此我需要在按下鼠标的时候捕获鼠标的位置,这样就解决了鼠标不在窗口…
首先是头文件,内容如下: #include <tchar.h> #include "..\CommonFiles\CmnHdr.h" #include <Windows.h> #include <WindowsX.h> #include <CommCtrl.h> #include "resource.h" #pragma comment (lib,"comctl32.lib") BOOL InitT…
1 系统和当前目录 1.1 获取Windows目录 UINT GetWindowsDirectory( LPTSTR lpBuffer, //BUFF的地址  UINT uSize    //BUFF的长度 ); 例如: C:\Windows 1.2 获取System目录 UINT GetSystemDirectory( LPTSTR lpBuffer, //BUFF的地址  UINT uSize   //BUFF的长度 ); 例如: C:\Windows\System32 1.3 获取临时文件…
一 .WM_PAINT消息 1 WM_PAINT的产生   由于窗口的互相覆盖等,产生需要绘制的区域,那么会产生WM_PAINT消息. 一般情况下,不直接发送WM_PAINT消息,通过API声明需要绘制区域,来产生WM_PAINT消息.    例如,可以使用InvalidateRect声明一个需要重新绘制的区域. 2 WM_PAINT的注意点    2.1 如果一个消息队列中,有多个WM_PAINT消息,只有最后一个WM_PAINT消息会被处理.  重绘是非常费内存资源的,比较慢.      2…
#include <windows.h> #include <gdiplus.h> /* GDI+ startup token */ ULONG_PTR gdiplusStartupToken; /* Declare Windows procedure */ LRESULT CALLBACK WindowProcedure (HWND, UINT, WPARAM, LPARAM); // UpdateLayeredWindow Defination typedef BOOL(*UP…
1 文件的创建或打开 HANDLE CreateFile( LPCTSTR lpFileName, //文件路径和名称 DWORD dwDesiredAccess,      //访问方式,最常用的值是GENERIC_READ,GENERIC_WRITE或两 个:GENERIC_READ|GENERIC_WRITE. DWORD dwShareMode,        //共享模式,FILE_SHARE_DELETE,FILE_SHARE_READ,FILE_SHARE_WRITE LPSECU…
使用阻止Enter键的编辑控件的简单子类来完成此操作: LRESULT CALLBACK EditSubclassProc(HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam, UINT_PTR uIdSubclass, DWORD_PTR dwRefData) { if (uMsg == WM_CHAR && wParam == VK_RETURN) ; LRESULT lRes = DefSubclassProc(hWnd, uMsg,…
传统的Win32通过GDI提供图形显示的功能,包括了基本的绘图功能,如画线.方块.椭圆等等,高级功能包括了多边形和Bezier的绘制.这样app就不用关心那些图形学的细节了,有点类似于UNIX上的X-window协议.你信或者不信,那些看上去很花哨的控件,其实就是一笔一划画上去的而已.GDI提供了画笔(用于线条).画刷(用于填充).调色板(用于支持256色显示).字体(用于文字).如果简单的图形不足以表达,你可以使用位图和画布(DC,设备上下文)直接将图像绘制到屏幕上去.此外,GDI还支持一些简…
GDI:Graphics Device Interface. System. Windows. Shapes 命名空间: 类 Ellipse 绘制一个椭圆. Line 在两个点之间绘制一条直线. Path 绘制一系列相互连接的直线和曲线. 直线和曲线维度通过Data属性声明,并且可以使用 Path 特定的 mini-language 或使用对象模型来指定. Polygon 绘制一个多边形,它是形成闭合形状的一系列相互连接的直接. Polyline 绘制一系列相互连接的直线. Rectangle…
C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows® 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大.他们没有足够的资源为所有 Win32 API 编写托管接口.加以测试并编写文档,因此只能优先处理最重要的部分.许多常用操作都有托管接口,但是还有许多完整的 Win32 部分没有托管接口. 平台调用 (…
http://blog.163.com/j_yd168/blog/static/496797282008611326218/     C# 用户经常提出两个问题:“我为什么要另外编写代码来使用内置于 Windows 中的功能?在框架中为什么没有相应的内容可以为我完成这一任务?”当框架小组构建他们的 .NET 部分时,他们评估了为使 .NET 程序员可以使用 Win32 而需要完成的工作,结果发现 Win32 API 集非常庞大.他们没有足够的资源为所有 Win32 API 编写托管接口.加以测试…
带插件的排序算法演示器 请尊重本人的工作成果,转载请留言.并说明转载地址,谢谢. 地址例如以下: http://blog.csdn.net/fukainankai/article/details/27710883 本节将通过一个实例来说明GDI+在MFC中的应用.这个算法演示器事实上是本人算法系列的一个开端,因为csdn没有树状的文件夹结构,咱也仅仅好使用链表了不是?好了.废话不多说,開始今天的文章. (一)功能说明 我们初步制定功能例如以下: (1). 可以通过柱状图.自己主动展示排序算法的交…
在 C# 中通过 P/Invoke 调用Win32 DLL 发布日期 : 1/13/2005 | 更新日期 : 1/13/2005 Jason Clark 下载本文的代码: NET0307.exe (133KB) 我在自己最近的编程中注意到一个趋势,正是这个趋势才引出本月的专栏主题.最近,我在基于 Microsoft® .NET Framework 的应用程序中完成了大量的 Win32® Interop.我并不是要说我的应用程序充满了自定义的 interop 代码,但有时我会在 .NET Fra…
介绍 API(Application Programming Interface),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认API在Windows编程中的重要性.大多数的编程语言都支持API编程,而.Net平台中的MFC(Microsoft Foundation Class Library)构架本身就封装了大部分的API. 做为程序员,我们需要了解API从字面上了解便是编程接口,因此,做为开发者,需要了解的只是API的使…
介绍 API( Application Programming Interface ),我想大家不会陌生,它是我们Windows编程的常客,虽然基于.Net平台的C#有了强大的类库,但是,我们还是不能否认API在Windows编程中的重要性.大多数的编程语言都支持API编程,而.Net平台中的MFC(Microsoft Foundation Class Library)构架本身就封装了大部分的API. 做为程序员,我们需要了解API从字面上了解便是编程接口,因此,做为开发者,需要了解的只是API…
原文地址:http://blog.csdn.net/byxdaz/article/details/5972759 GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息. GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选. 一.GDI+的特点…
摘  要:本文首先给出了一种结合了DIB和DDB两种位图优点的图像显示方法,其次对GDI函数的高级应用,如透明位图显示.图像旋转显示.图像镜像显示进行了研究. 关键词:GDI图像显示,特殊GDI函数的应用,透明位图显示,图像几何变换显示 图像信息是人类认识世界的重要知识来源,人类获得的70%以上的信息来自于眼睛摄取的丰富和真切的图像.图像与计算机相结合带给人们近乎神奇的图像艺术.对于程序开发者来说,实现高速的绘图是设计漂亮友好的用户界面的基础和关键所在. 在Win32图像程序设计中,图像显示的方…
MFC中把线程分为两种类型,UI线程和工作者线程. MFC中启动一个线程的最好方法是调用AfxBeginThread,有两个版本,一个用于启动Ui线程,另外一个用于启动工作者线程.在MFC程序中,只有在线程不使用MFC库时,才可以使用Win32的CreateThread函数来创建线程.AfxBeginThread不仅仅是对CreateThread函数的封装,它还会初始化主结构使用的内部状态信息,在不同的地方执行合理的检查,确保以线程安全的方式访问运行时库中的函数. 工作线程的创建 调用AfxBe…
GDI+(Graphics Device Interface Plus图形设备接口加)是Windows XP和Windows Server 2003操作系统的子系统,也是.NET框架的重要组成部分,负责在屏幕和打印机上绘制图形图像和显示信息. GDI+不但在功能上比GDI 要强大很多,而且在代码编写方面也更简单,因此会很快成为Windows图形图像程序开发的首选. 一.              GDI+的特点和新增功能 GDI+与GDI一样,都具有设备无关性.应用程序的程序员可利用GDI+这样…
CreateThread()传回两个值,用以识别一个新的线程.第一个值是个Handle,  这也是CreateThread()的返回值,大部分与线程有关的API函数都需要它.第二个值是由lpThreadId带回来的线程ID.线程ID是一个全局变量,可以独一无二地表示系统中任一进程中的某个线程.AttachThreadInput()和PostThreadMessage()就需要用到线程ID,这两个函数允许你影响其他人(线程)的消息队列.调试器和进程观察器也需要  线程ID,为了安全防护的缘故,你不…