加载中…
个人资料
jh_saya
jh_saya
  • 博客等级:
  • 博客积分:0
  • 博客访问:26,403
  • 关注人气:7
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
访客
加载中…
搜博主文章
博文

图像

GDI+主要是用Image类和Bitmap类实现图像的管理维护,Bitmap类是在Image类的基础上派生的.

Image类构造函数有两种:

  1. Image(filename, useEmbeddedColorManagement)
  2. Image(stream, useEmbeddedColorManagement)

filename:文件名.

stream:IStream接口对象(略).

useEmbeddedColorManagement:是否使用图片文件中的色彩校正信息(如ICM,Gamma校正),该参数默认值为FALSE.

 

加载图像后显示用的函数为:

  1. DrawImage(Image* image, ......)
  2. ......多种显示方式,下面接着介绍.

 

图像的剪裁与缩放

例子:

  1. Graphics graphics(hWnd);
  2. Image image(L'025-皮卡丘.png');
  3. // 在坐标(0,0)上绘制完整图像
  4. graphics.DrawImage(&image,0,0);
  5. // 获取图像宽度高度
  6. UINT width = image.GetWidth();
  7. UINT height = image.GetHeight();
  8. // 创建原图2倍大小的区域用于显示
  9. Rect rect(width+10, 0, 2*width, 2*height);
  10. graphics.DrawImage(
  11. &n
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

构造Graphics对象

Graphics类是GDI+程序设计的核心,Graphics类能够完成大部分的绘图,文本输出,几何图形的填充及坐标系统的转换等各种操作.在功能上,它与GDI的设备环境(DC)一致.

Graphics类有下列几种构造函数:

  1. static Graphics* FromHDC(HDG hdc);
  2. static Graphics* FromHDC(HDG hdc, HANDLE hDevice);
  3. static Graphics* FromHWND(HWND hWnd, BOOL icm);
  4. static Graphics* FromImage(Image* image);

hdc:设备环境句柄.

hWnd:窗口句柄.

icm:是否使用色彩配置文件校正色彩.

image:图像对象.

Hdevice:设备句柄.

--------------------------------------------------------------------------------------------------

画笔

GDI+通过Pen类来定义一个画笔,Pen类的构造函数有以下两种:

  1. Pen(color, width)
  2. Pen(brush, width)

第二种为使用指定的画刷来构造一个画笔.

 

画笔的线型

Pen类成员函数SetDashStyle(设置画笔线程)可以设置画笔的线型.GDI+在DashStyle(线程)枚举中提供了5个常

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2012-04-05 01:05)
建立GDI+程序分为四个步骤:

1、在项目中引入GDI+的头文件,使用GDI+的命名空间。

2、初始化GDI+系统资源。

3、使用完毕后,释放GDI+所使用的资源。

4、在编译时加入GDIPlus.lib链接库。

---------------------------------------------------

打开stdafx.h,在该文件的末尾处加入以下代码:

// 出错解释

#include <comdef.h>

// 引入GDI+头文件
#include <gdiplus.h>
// 使用GDI+命名空间
using namespace Gdiplus;

---------------------------------------------------

// 定义变量(成员变量)

ULONG_PTR gdiplusToken;
Gdiplus::GdiplusStartupInput gdiplusStartupInput;

// GDI+系统资

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2012-03-27 19:55)

判断矩形碰撞:

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

键盘消息

  1. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam){}

消息处理函数常见的键盘处理消息(message)有3种:

  1. WM_KEYDOWN     // 按下按键消息
  2. WM_KEYUP       // 松开按键消息
  3. WM_CHAR        // 字符消息

处理按下按键消息时如果判断按下的是哪个键可以由附加信息wParam得知.例子:

  1. LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam)
  2. {
  3.     switch (message)
  4.     {
  5.         case WM_KEYDOWN:          // 按下键盘消息
  6.             switch (wParam)
  7.             {
  8.         &n
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

地图(Map)

32*32图块:

  1. void map(HDC hdc)
  2. {
  3.     HDC mdc,mdc2;
  4.     HBITMAP fullmap;
  5.     const int rows = 8,cols = 8;
  6.     int mapindex[rows*cols] = {
  7.         0, 0, 0, 0, 0, 0, 0, 0,
  8.         0, 0, 0, 0, 0, 0, 0, 0,
  9.         0, 0, 2, 1, 2, 0, 0, 0,
  10.         0, 0, 1, 1, 1, 0, 0, 0,
  11.         0, 0, 2, 1, 2, 0, 0, 0,
  12.         0, 0, 0, 0, 0, 0, 0, 0,
  13.         0, 0, 0, 0, 0, 0, 0, 0,
  14.         0, 0, 0, 0, 0, 0, 0, 0
  15.     };
  16.     mdc = CreateCompatibleDC(hdc);
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

新建:Min32应用项目

项目名:Game

stdafx.h 标头文件,引用整个项目所需的头文件.

Game.cpp 主程序文件,包含整个项目的主程序WinMain.

Game.rc 资源文件,定义了整个项目所使用的资源.

 

构成主程序Game.cpp中几个重要的函数:

WinMain 程序起始点

InitInstance 建立及显示窗口的初始化函数

CreateWindow 注册窗口类别

WndProc 处理程序消息

--------------------------------------------------------------------------------------------------

GDI(Graphics Device Interface)图形设备接口,负责系统与绘图程序之间的信息交换,处理所有Windows程序的图形输出.

--------------------------------------------------------------------------------------------------

DC(Device Context)设备内容,在一个图形输出设备上绘图时,必须获得一个设备内容(DC)的句柄.将句柄传回给程序时,Windows就给了您使用设备的权限.然后您在GDI函数中将这个句柄作为一个参数,向Windows标识您想在其上进行绘图的设备.

  1. case WM_PAINT:
  2.     
阅读  ┆ 评论  ┆ 转载 ┆ 收藏 

1.第一段代码

#include<iostream>
using namespace std;
class ClxBase{
public:
    ClxBase() {};
    ~ClxBase() {cout << 'Output from the destructor of class ClxBase!' << endl;};

    void DoSomething() { cout << 'Do something in class ClxBase!' << endl; };
};

class ClxDerived : public ClxBase{
public:
    ClxDerived() {};
    ~ClxDerived() { cout << 'Output from the destructor of class ClxDerived!' << endl; };

    void DoSomething() { cout << 'Do something in class ClxDerived!' << endl; };
};
  int   main(){  
  ClxDerived *p =  new ClxDerived;
  p->DoSomething();
  delete p;
  return 0;
  }

运行结果:

Do something in class ClxDerived!   

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2012-03-12 18:18)

堆区(heap)             :由malloc,new等分配的空间的地址,地址由低向高增长.

栈区(stack)(动态区)    :是自动分配变量,以及函数调用所使用的一些空间(局部变量),地址由高向低减少.

全局区(static)(静态区) :存放全局或静态变量.

程序代码区             :存放所有代码.

文字常量区             :存放字符串常量,程序结束后由系统释放.

(寄存器                :register变量.)

(频繁使用堆区会产生内存碎片,而按照堆栈的先入后出原则,即先申请的后释放原则可以有效地避免在堆中产生碎片)


关于函数:

    全局函数     :在外部定义的函数为全局函数.

    静态全局函数 :全局函数前加关键字static(静态)为静态全局函数,静态全局函数不能声明为const(常量)或

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
(2012-03-12 18:11)

(I/O (in 输入)/(out 输出))
(file 文件)
(get 得到)
(line 排)
(stream 流)
cin>> 输入流
cout<< 输出流
ifstream 输入文件流
ofstream 输出文件流
getline 读入串

 

char 字符型
short 短型
long 长型
int 整型
float 浮点型
double 双精度浮点型

 

signed 有符号的
unsigned 无符号的

 

string 串

 

void 空的
(pointer 指针)

 

(array 数组)
vector 向量(矢量)

struct 结构体
union 共用体
class 类
public 公有的
private 私有的
protected 保护
virtual 虚拟的

 

enum 枚举型
bool 布尔型
true 真
false 伪

 

(type 类型)
(def 定义)
typedef 类型定义
const 常量
auto 自动变量
static 静态
register 寄存器
extern 外部
friend 友元
inline 内联
operator 操作符(操作

阅读  ┆ 评论  ┆ 转载 ┆ 收藏 
图片播放器
相册专辑
加载中…
评论
加载中…
留言
加载中…

新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

新浪公司 版权所有