java getdc_GetDC、GetDCEx、GetWindowDC
GetDC
该函数为指定窗口的客户区域取回显示DC的句柄。随后的GDI函数中可以使用显示DC在窗口客户区域绘图。
原型:
HDC
GetDC(
HWND
hWnd);
参数:
hWnd:将要取回DC的窗口句柄。如果该值为NULL,GetDC取回整个屏幕的DC。
返回值:
成功,获得指定窗口客户区域的DC句柄;失败返回NULL。调用GetLastError获取扩展错误信息。
备注:
根据为指定窗口指定的类类型来决定取回一个公共、类或私有DC(a common, class, or private device context )。
每次取回公共DC时,GetDC函数给它赋值默认属性。
取回类或私有DC时,GetDC函数保持之前赋值的属性不变。
在使用公共DC绘图后,必须调用
ReleaseDC来释放DC。
类和私有DC不必释放。
可用内存数决定DC的数量。
GetDCEx
该函数为指定窗口的客户区域或整个屏幕取回显示DC的句柄。随后的GDI函数中可以该句柄在窗口客户区域绘图。
GetDCEx 是GetDC的扩展,对如何剪裁客户区域或是否剪裁客户区域提供给程序更多的控制。
原型:
HDC
GetDCEx(
HWND
hWnd,
HRGN
hrgnClip,
DWORD
flags);
参数:
hWnd:将要取回DC的窗口句柄。如果该值为NULL,GetDCEx取回整个屏幕的DC。
hrgnClip:指定可能和DC的可见区域合并的剪切区域。
flags:指定DC的创建方式。可能为下表中的值的组合:
值
描述
DCX_WINDOW
返回于窗口矩形而不是客户端矩形对应的DC。
DCX_CACHE
从缓存中取回DC,而不是OWNDC或CLASSDC窗口。实际上重写了CS_OWNDC和CS_CLASSDC了。
DCX_PARENTCLIP
使用父窗口的可见区域。取消父窗口的WS_CLIPCHILDREN和CS_PARENTDC标志位。DC的起始坐标设置为由hWnd标识的窗口的左上角。
DCX_CLIPSIBLINGS
排除由hWnd标识的窗口的所有同级窗口的可见区域。
DCX_CLIPCHILDREN
排除由hWnd标识的窗口的所有子窗口的可见区域。
DCX_NORESETATTRS
当该DC释放时,不用设置该DC的属性为默认值。
DCX_EXCLUDERGN
从返回的DC的可见区域里去除hrgnClip标识的剪切区域。
DCX_EXCLUDEUPDATE
返回一个区域,该区域去除了窗口更新的区域。
DCX_INTERSECTRGN
hrgnClip表示的剪切区域和返回DC的可见区域取交集。
DCX_INTERSECTUPDATE
返回一个区域,该区域包含窗口更新的区域。
DCX_VALIDATE
当指定DCX_INTERSECTUPDATE,引起DC完全有效(causes the device context to be completely validated.)。在该函数中使用DCX_INTERSECTUPDATE和DCX_VALIDATE等价于使用BeginPaint函数。
返回值:
成功,返回指定窗口DC句柄。失败返回NULL。如果传入的hWnd为无效值,返回失败。调用GetLastError获取扩展错误信息。
备注:
flags支持这些值:
DCX_WINDOW,
DCX_CACHE,
DCX_CLIPCHILDREN,
DCX_CLIPSIBLINGS,
DCX_EXCLUDERGN,
DCX_INTERSECTRGN,
DCX_EXCLUDEUPDATE和
DCX_INTERSECTUPDATE。
和GetDC返回的DC不同,GetDCEx返回的DC不会和相关窗口保持同步。
如果窗口移动或改变大小,可能会产生异常错误。如果程序获取DC、绘图然后再释放DC,错误的机会将会减少。
除非显示DC属于窗口类,否则在绘图后必须调用
ReleaseDC来释放DC。
因为一次只能有5个公共DC可用,如果释放DC失败,将可能导致其他程序访问DC失败。
如果
CS_CLASSDC, CS_OWNDC或
CS_PARENTDC被指定为WNDCLASS结构中的一个类型,当该窗口类被注册时,函数将返回属于窗口类的DC。
GetWindowDC
函数取回整个窗口DC,包括标题栏、菜单和滚动栏。
原型:
HDC
GetWindowDC(
HWND
hWnd);
参数:
hWnd:要取回DC的窗口句柄。如果该值为NULL,取回整个屏幕的DC。
返回值:
成功,返回指定窗口DC的句柄。NULL表示失败或传入的hWnd为无效参数。调用GetLastError获取扩展错误信息。
备注:
GetWindowDC专为在窗口非客户区域绘图而设计。不推荐在任何窗口的非客户区域绘图。
使用
GetSystemMetrics函数获取象标题栏、菜单和滚动栏等非客户区域的尺寸大小。
GetDC用来取回整个
屏幕的DC。
在绘图完成后,必须调用ReleaseDC来释放DC。如果不释放窗口DC,应用程序的绘图请求将会产生不良影响。
java getdc_GetDC、GetDCEx、GetWindowDC相关推荐
- GetDC、GetDCEx、GetWindowDC - [Daily APIs]
原文地址::http://www.cnblogs.com/Lisen/archive/2010/01/22/1654384.html 相关网帖 1.GDI编程小结----http://www.360d ...
- 从底层吃透java内存模型(JMM)、volatile、CAS
前言 随着计算机的飞速发展,cpu从单核到四核,八核.在2020年中国网民数预计将达到11亿人.这些数据都意味着,作为一名java程序员,必须要掌握多线程开发,谈及多线程,绕不开的是对JMM(Java ...
- Java中类、常量、变量、方法名等命名规则
Java中类.常量.变量.方法名等命名规则 命名规则: 命名由字母.数字.下划线.美元符号($)构成. 命名不可以数字作为开头. 长度无限制,但不可存在空格. 大小写所表述内容含义不同. 命名不可与J ...
- [JAVA EE] JPA 技术实践:完成增、删、改、查操作
项目已上传:https://codechina.csdn.net/qq_36286039/javaee 注意本项目是包含后文JPA 查询用法内容的,若您想看只有本文内容的项目,请下载: https:/ ...
- 【java线程】锁机制:synchronized、Lock、Condition
[Java线程]锁机制:synchronized.Lock.Condition 原创 2013年08月14日 17:15:55 标签:Java /多线程 74967 http://www.infoq. ...
- java which语句,java入门之表达式、语句、块
表达式.语句和块是java语言的基础.运算符(Operator)用来计算值,它和变量(Variable)构成了表达式(Expression),表达式是语句(Statement)的核心部分,而语句又构成 ...
- Java对点、线、面生成栅格瓦片jpg,并渲染呈现
Java对点.线.面生成栅格瓦片jpg,并渲染呈现 1. 效果图 2. 原理 2.1 面瓦片的生成 2.2 线瓦片的生成 2.3 多点瓦片的生成 3. 源码 参考 这篇博客将介绍从前端HTML页面到后 ...
- Java CSV文件读取、写入及追加
Java CSV文件读取.写入及追加 https://blog.csdn.net/liq816/article/details/81286472 追加: FileOutputStream out = ...
- java 读取流的字符编码格式_如何使用Java代码获取文件、文件流或字符串的编码方式...
标签: 今天通过网络资源研究了一下如何使用Java代码获取文件.文件流或字符串的编码方式,现将代码与大家分享: package com.ghj.packageoftool; import info.m ...
最新文章
- 孔子绝粮于陈蔡子贡孔子问答节选(白话)
- Web认证及API的 使用TOKEN的一些思考
- Tomcat无法访问中文路径的解决办法
- js 一/二维数组排序
- 获取本机IP_考虑多网卡的情况
- 调整png的不透明度_TGA与PNG的优劣对比
- 飞秋2010下载不仅野草是如此
- visio保存后公式变形_固体力学中的变形分析
- maven项目对象模型(二)
- 如何在word中的框中打钩、打叉
- java 数字翻译成英文_【Java】 剑指offer(46) 把数字翻译成字符串
- 电信光猫 中兴ZXHN F412破解
- 【今日学长】来自柚子帮学长--英国留学租房攻略!
- 计算机中汉字的顺序用什么牌,中国汉字的写做顺序,你知道吗?
- 音频原始数据能量检测算法
- c/c++ 趣味程序百例
- k8s添加pod,k8常用命令,k8s删除pod
- Qt快速转换路径(斜杠与反斜杠转换)
- 看完这篇还不懂高并发中的线程与线程池你来打我
- 【智力题】13 个球一个天平,现知道只有一个和其它的重量不同,问怎样称才能用三次就找到那个球?