在 VC6 中使用 GdiPlus-使用

下面用 VC6 来写一个 GdiPlus 的 Demo 工程

Step1:新建一个名为 Demo_GdiPlus 的 MFC AppWizard(exe) 工程

操作步骤:
(1)主菜单File->New...,选择 Projects 选项卡;
(2)在工程类型列表中选中 MFC AppWizard(exe);
(3)Project name 填入 Demo_GdiPlus,按 OK 进入下一页;
(4)选择单文档(Single document)类型的程序框架,按 Finish 完成工程创建工作。

Step2:添加头文件声明

在 StdAfx.h 中添加以下代码:

//{{AFX_INSERT_LOCATION}}
// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
typedef unsigned long ULONG_PTR, *PULONG_PTR;
#include <gdiplus.h>
using namespace Gdiplus;
#pragma comment (lib, "GdiPlus.lib")

Step3:在 CDemo_GdiPlusApp 中增加成员变量 m_gdiplusToken,并在构造函数中进行初始化

class CDemo_GdiPlusApp : public CWinApp
{
private:
 ULONG_PTR m_gdiplusToken;
 // …… ……
};

CDemo_GdiPlusApp::CDemo_GdiPlusApp()
{
 // TODO: add construction code here,
 // Place all significant initialization in InitInstance
 m_gdiplusToken = NULL;
}

Step4:添加安装和卸载 GdiPlus 的代码
通过 ClassWizard 在 CDemo_GdiPlusApp 中增加成员函数

// .h 中的声明
virtual BOOL InitInstance();
virtual int ExitInstance();

// .cpp 中的实现
BOOL CDemo_GdiPlusApp::InitInstance()
{
 // 加载 GdiPlus
 Gdiplus::GdiplusStartupInput gdiplusStartupInput;
 Gdiplus::GdiplusStartup(&m_gdiplusToken, &gdiplusStartupInput, NULL);
 // …… ……
}

int CDemo_GdiPlusApp::ExitInstance() 
{
 // TODO: Add your specialized code here and/or call the base class
 // 卸载 GdiPlus
 if (m_gdiplusToken)
  Gdiplus::GdiplusShutdown(m_gdiplusToken);  
 return CWinApp::ExitInstance();
}

Step5:找到 CDemo_GdiPlusView::OnDraw() 函数,在里面添加一段 GdiPlus 的绘图代码

void CDemo_GdiPlusView::OnDraw(CDC* pDC)
{
 CDemo_GdiPlusDoc* pDoc = GetDocument();
 ASSERT_VALID(pDoc);
 // TODO: add draw code for native data here
 
 Graphics graphics(pDC->GetSafeHdc());
 
 // Pen can also be constructed using a brush or another pen.  There is a second parameter - a width which defaults to 1.0f
 Pen blue (Color(255, 0, 0, 255));
 Pen red  (Color(255, 255, 0, 0));
 
 int y = 256;
 for (int x = 0; x < 256; x += 5)
 {
  graphics.DrawLine(&blue, 0, y, x, 0);
  graphics.DrawLine(&red, 256, x, y, 256);  
  y -= 5;
 }  
}

编译运行,Demo 程序完成。留住这个 Demo 程序,今后我们会利用它进行更加深入的 GdiPlus 学习。

时间: 2024-10-13 10:46:18

在 VC6 中使用 GdiPlus-使用的相关文章

VC6中创建Qt工程的创建

文章来源:http://blog.sina.com.cn/s/blog_64d015c10100sf1o.html 本文主要介绍怎么创建可以在VC6中编译的QT工程.本文所采用环境为VC++6.0+QT3.3.2. 一.打开QTdesigner,,在弹出的窗口中选择new file/project标签,选中其中的C++ project,点OK按钮,出现project setting界面,输入工程名,比如说test.pro,然后点击OK,这样QT的工程就建好了.二.添加主界面,在file->new

在VC6中使用ogre进行游戏开发

微软公司开发的visual c++6.0堪称史上最易用.最成熟的开发工具.vc6以其小巧.轻便赢得了程序员的喜爱,以至于在VS大行其道的时代,很多程序员仍然使用vc6作为开发工具,vc6的欢迎性可见一斑.可惜vc6有一个缺点,那就是不能开发ogre应用程序.网上的教程,链接已经过时.个人也是查找了好多资料,搞了整整一上午才终于配置得差不多,但仍然失败了好几个,不过已经不影响大局了.ogre是一个极其复杂的工程,它借助了许多的第三方库,比如说boost.stlport.所以编译ogre也是一个相当

[转载]VC6中的文件后缀

VC文件扩展名 .APS:存放二进制资源的中间文件,VC把当前资源文件转换成二进制格式,并存放在APS文件中,以加快资源装载速度. .BMP:位图资源文件. .BSC:浏览信息文件,由浏览信息维护工具(BSCMAKE)从原始浏览信息文件(.SBR)中生成,BSC文件可以用来在源代码编辑窗口中进行快速定位. .C:用C语言编写的源代码文件. .CLW:ClassWizard生成的用来存放类信息的文件. .CNT:用来定义帮助文件中“Contents”的结构. .CPP或.CXX:用C++语言编写的

在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)

一.图片显示 图片显示的方法: 1.  直接写程序 2.  第3方库 3.  调用COM组件的IPicture接口 4.  使用MFC的CPictureHolder类 5.  使用GDI+的CImage类(VC6无,从VS2003开始有) 测试过的方法有1.3.5. 测试过的格式有BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF. IPicture接口不支持的格式有:PNG和TIF. GDI+支持全部格式. 二.插件的实现(VC6) 只做了基于DLL的插件实现试验,基于“公

【mfc】VC6中正确继续上次项目的做法

可能有些人不清楚VC6怎么正确继续上次项目,当然也是极少数人,往往随便打开一个相关工程的CPP文件,然后编译一次,就继续开始做了,常见于刚学习C语言的人 其实VC6有工作空间的概念,你每编译一次项目,它都会保存当前的工作状态,你下次继续做这个工程,直接打开工作空间即可, 如下图是VC6刚打开的状态,选择文件->打开工作空间,找到你保存工程的文件夹,打开里面的.dsw文件即可

VC6中的断点调试

程序经常出现循环语句,而循环语句的调试是复杂的.可以使用[位置断点]来解决这个问题. [位置断点]就是在指定的行设置断点.F9即可设置当前行的断点.再按Ctrl+B -->选中"at { xxx.cpp}"-->Codition--->在skip编辑框里输入相应的循环次数即可.具体如下. 例如,在一个循环的过程中可能出现异常,就可以使用位置断点,如下: #include <stdio.h> void main() { int sum=0; int n=15

vc6中关于“新建”

1.windows api 编程:新建→工程→Win32 Application→一个空工程→新建→文件→C++ Source File2.windows mfc 编程:新建→工程→MFC AppWizard(exe)3.c/c++ 编程:新建→文件→C++ Source File

vc6中 EnumDisplayDevices 判断扩展屏幕,以及取得扩展屏幕的示例代码。

#define        SM_CMONITORS        80 //    int screen_count = ::GetSystemMetrics( SM_CMONITORS ); BOOL EnumDisplayDevices( LPCTSTR lpDevice,                // device name DWORD iDevNum,                   // display device PDISPLAY_DEVICE lpDisplayDe

【转】C++中map容器的说明和使用技巧

C++中map容器提供一个键值对容器,map与multimap差别仅仅在于multiple允许一个键对应多个值. 一.map的说明    1   头文件   #include   <map>     2   定义   map<string,   int>   my_Map;   或者是typedef     map<string,   int>   MY_MAP;   MY_MAP   my_Map;     3   插入数据   (1)   my_Map["