一个、使用位图

1 位图 - 由图像上的各点的颜色被保存,生成对应的位图文件

栅格 - 保存图像可以理解为晶格

矢量图 - 能够理解为画图命令的保存

2 位图的使用

2.1 载入位图

LoadBitmap

2.2 创建放置位图的DC

CreateCompatibleDC

2.3 将位图放入创建的DC中

SelectObject

2.4 绘制位图到当前DC中

BitBlt

StretchBlt 能够实现图像的缩放。可是缩放的效果不好

2.5 取出位图

SelectObject

2.6 删除创建的DC

DeleteDC

2.7 删除位图

DeleteObject

2.8 获取位图信息

int GetObject(
HGDIOBJ
hgdiobj, // handle to graphics object GDI对象句柄 这里就是HBITMAP
int cbBuffer, // size of buffer for object information 位图信息的BUFF的大小
LPVOID lpvObject // buffer for object information 位图信息的BUFF指针
);
位图的BUFF结构为BITMAP结构

二 坐标系和映射模式

1 坐标系

1.1 设备坐标系

设备坐标系以像素为单位。x正方向从左往右,y正方向从上往下

屏幕坐标系 - 以屏幕的左上角为(0,0)点

窗体坐标系 -  以窗体最外边框的左上角为(0,0 )点

客户区坐标系 - 以窗体内的客户区的左上角为(0, 0) 点

1.2 逻辑坐标系

以逻辑单位定义的坐标系。

画图过程中使用的坐标基本是以逻辑坐标系绘制 默认情况下和设备坐标系保持一致,

可是能够改动

2 映射模式

逻辑坐标系和设备坐标系之间的映射关系

2.1 映射模式的种类

MM_TEXT - 默认的映射方式,逻辑坐标系和设备坐标系一致

MM_LOMETRIC - 0.1MM  X 方向一致 Y方向相反

MM_HIMETRIC  -  0.01MM    X 方向一致 Y方向相反

MM_LOENGLISH - 0.1inX     方向一致 Y方向相反

MM_HIENGLISH - 0.01inX     方向一致 Y方向相反

MM_TWIPS - 1/1400in 方向一致 Y方向相反

MM_ANISOTROPIC  -  能够指定逻辑单位 XY方向能够指定          X轴单位能够不等于 Y轴单位

MM_ISOTROPIC       - 能够指定逻辑单位  XY的方向也能够指定。 X轴单位 = Y轴单位

3  映射模式的使用

3.1 设置映射模式

int SetMapMode(
HDC
hdc, // handle to device context 映射的句柄
int fnMapMode // new mapping mode 新的映射方式
); //返回旧的映射模式

3.2 画图

3.3 回复旧映射模式

int SetMapMode(
HDC
hdc, // handle to device context
int fnMapMode // new mapping mode
);

3.4 MM_ISOTROPIC

须要自己设计X/Y轴的正方向以及逻辑单位和设备单位的比例

设备坐标  像素

BOOL SetWindowExtEx(
HDC
hdc, // handle to device context
int nXExtent, // new horizontal window extent
int nYExtent, // new vertical window extent
LPSIZE lpSize // original window extent
);

逻辑坐标

BOOL SetViewportExtEx(
HDC
hdc, // handle to device context
int nXExtent, // new horizontal viewport extent
int nYExtent, // new vertical viewport extent
LPSIZE lpSize // original viewport extent
);

通过加入正负号设置Y轴方向

2.3 坐标系的原点

2.3.1 窗体坐标系 - 逻辑坐标系

视口坐标系 - 设备坐标系

2.3.2 窗体坐标系和视口坐标系原点重合

SetViewPortOrgEx  设备坐标系原点相应逻辑坐标系的位置

SetWindowOrgEx  逻辑坐标系原点相应设备坐标系的位置

三 文字和字体

1 文字的绘制

1.1 TextOut

1.2 DrawText

int DrawText(
HDC
hDC, // handle to DC
LPCTSTR lpString, // text to draw
int nCount, // text length
LPRECT lpRect, // formatting dimensions
UINT uFormat // text-drawing options
);

1.3 ExtTextOut

对于汉字字符。因为一个字符占2个字节,所以汉字字符之间的间距应该为0

1.4 字符绘制的相关属性

SetTextColor 设置字符的颜色

SetBkColor 设置背景色

SetBkMode 绘制的方式

2 字体

2.1 创建字体

HFONT CreateFont(
int
nHeight, // height of font 字体的逻辑高
int nWidth, // average character width 字体的逻辑宽
int nEscapement, // angle of escapement 字符倾斜度
int nOrientation, // base-line orientation angle 字符的旋转
int fnWeight, // font weight 加粗
DWORD fdwItalic, // italic attribute option 斜体
DWORD fdwUnderline, // underline attribute option 下划线
DWORD fdwStrikeOut, // strikeout attribute option 中划线
DWORD fdwCharSet, // character set identifier 字符集
DWORD fdwOutputPrecision, // output precision 输出精度
DWORD fdwClipPrecision, // clipping precision 剪切
DWORD fdwQuality, // output quality 输出质量
DWORD fdwPitchAndFamily, // pitch and family
LPCTSTR lpszFace // typeface name 字体名称
);

2.2 设置字体

SlectObject

2.3 画图

2.4 取出字体

SelectObject

2.5 删除字体

DeleteObject

四、对话框

1 对话框的分类

无模式对话框 - 对话框显示后。不影响其它窗体的使用

有模式对话框 - 对话框显示后,会将其它的窗体禁止输入

2 对话框的基本使用方式

2.1 对话框的窗体处理函数

2.2 注冊窗体

2.3 创建对话框

2.4 关闭对话框

3 对话框资源

4 有模式对话框的使用

4.1 加入对话框资源

4.2 定义对话框窗体处理函数

INT_PTR CALLBACK DialogProc(
HWND
hwndDlg, // handle to dialog box
UINT uMsg, // message
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
);

4.3 创建对话框

INT_PTR DialogBox(
HINSTANCE
hInstance, // handle to module
LPCTSTR lpTemplate, // dialog box template
HWND hWndParent, // handle to owner window
DLGPROC lpDialogFunc // dialog box procedure
);

4.4 关闭对话框

BOOL EndDialog(
HWND
hDlg, // handle to dialog box
INT_PTR nResult // value to return
);

返回值就是nResult

版权声明:本文博客原创文章,博客,未经同意,不得转载。

Win32 Windows计划 十一年的更多相关文章

  1. 利用开源的TaskScheduler组件实现监控和管理windows计划任务

    对于计划任务的执行有很多种解决方案,如利用开源Quartz作业调度框架,在SQL Server的作业等等,同时Windows的任务计划程序功能也很强大,利用此可以很方便的实现很多计划任务,除了人工进行 ...

  2. 如何在windows计划中调用备份sharepoint2010网站集的powershell脚本

    最近有个项目需要在在windows计划中使用powershell脚本备份sharepoint2010网站集,打开sharepoint的powershell执行命令管理界面的属性 查看: C:\Wind ...

  3. Windows计划任务执行时不显示窗口的问题

    最近开发了工具,带界面的,需要定时执行的,为了方便直接用Windows计划任务做定时了.跑了一段时间发现,进程中也有,就是看不到程序的界面,进程的执行貌似也阻塞了. 从网上查了下,发现时启动方式的问题 ...

  4. windows计划任务执行SQLserver脚本

    2016年3月1号,北京出差,documentbrowser系统改善上线. 其中有一个数据库表需要每天进行同步,原计划使用SQLServer的作业来执行又方便又快捷,但是客户的数据库是05的expre ...

  5. 不需要密码的windows计划任务设置

    使用windows计划任务定时做些事情,确实非常方便,但创建任务时老是需要设置密码,否则在执行任务时会报80070005的系统错误导致任务无法执行. 有时windows没设密码或当账户修改密码就必须修 ...

  6. windows 计划任务执行python脚本

    1.  查找并打开Windows计划任务 2. 创建任务 3. 输入名称 4. 通过触发器设置运行时间或周期 5. 通过操作,设置运行的脚本 a. 操作选择'启动程序' b. 程序或脚本选择 pyth ...

  7. 用windows计划任务执行一些内容的写法,

    用windows计划任务执行一些内容的写法, 以下示例: 1.创建ws对象 2.关闭java进程 3.执行bat文件 start.vbe文件内容 set ws=wscript.createobject ...

  8. VBS调用OUTLOOK发送邮件,windows计划任务定时拉起VBS调用OUTLOOK发送邮件

    OUTLOOK有延迟传递功能,可延迟传递的发送邮件在功能设计时(mircosoft的support帮助页的解释)就是邮件发送时的时间而不是邮件发送成功后的时间.比如早上10点发一封11点后的延迟传递邮 ...

  9. Windows系统使用vbs脚本或bat脚本强制杀死指定所有进程 vbs实现循环持续写入内容到vbs打开开的记事本 使用vbs、bat添加windows计划任务 使用cmd schtasks命令添加windows计划任务

    以下脚本windows7下成功运行过,脚本也可以windows计划任务程序一起组合使用 新建一个记事本文档粘贴下面代码后将新建的记事本文档重命名下面对应的脚本名就能使用了: 添加windows计划任务 ...

随机推荐

  1. storm原理介绍

    目录 storm原理介绍 一.原理介绍 二.配置 三.并行度 (一)storm拓扑的并行度可以从以下4个维度进行设置: (二)并行度的设置方法 (三)示例 四.分组 五.可靠性 (一)spout (二 ...

  2. leetcode笔记:Remove Duplicates from Sorted Array II

    一.题目描写叙述 二.解题技巧 这道题和Remove Duplicates from Sorted Array这道题是相似的.仅仅只是这里同意出现反复的数字而已,能够採用二分搜索的变种算法.仅仅只是增 ...

  3. angular表单的使用实例

    原文 https://www.jianshu.com/p/da1fd5396798 大纲 1.模板驱动表单的创建 2.响应式表单的创建 3.模板驱动型表单的自定义指令 4.响应式表单的自定义指令 5. ...

  4. (十四)RabbitMQ消息队列-启用SSL安全通讯

    原文:(十四)RabbitMQ消息队列-启用SSL安全通讯 如果RabbitMQ服务在内网中,只有内网的应用连接,我们认为这些连接都是安全的,但是个别情况我们需要让RabbitMQ对外提供服务.这种情 ...

  5. linux 内核驱动编程 简单例子 与_IO, _IOR, _IOW, _IOWR 宏解析

    一._IO, _IOR, _IOW, _IOWR 宏的用法与解析 在驱动程序里, ioctl() 函数上传送的变量 cmd 是应用程序用于区别设备驱动程序请求处理内容的值.cmd除了可区别数字外,还包 ...

  6. Android自定义组件系列【7】——进阶实践(4)

    上一篇<Android自定义组件系列[6]--进阶实践(3)>中补充了关于Android中事件分发的过程知识,这一篇我们接着来分析任老师的<可下拉的PinnedHeaderExpan ...

  7. js javascript正则

    var re = new RegExp("^[0-9]$"); 或者 var re2 = /^\d$/;//这个好像兼容性更好,比如你在上面的语句里面写\d,就总是返回false, ...

  8. Struts2完全解耦和

    jsp: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEnco ...

  9. nopCommerce 3.9 大波浪系列 之 使用部署在Docker中的Redis缓存主从服务

    一.概述 nop支持Redis作为缓存,Redis出众的性能在企业中得到了广泛的应用.Redis支持主从复制,HA,集群. 一般来说,只有一台Redis是不可行的,原因如下: 单台Redis服务器会发 ...

  10. 【9107】Hanoi双塔问题(NOIP2007)

    Time Limit: 10 second Memory Limit: 2 MB 问题描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的 ...