学习windows编程 day4 之 设置画刷
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam)
{
HDC hdc;
PAINTSTRUCT ps;
RECT rect;
static HBRUSH hBrush, hOldBrush;
switch (message)
{
case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);
GetClientRect(hwnd, &rect);
//系统画刷数共有11个
//画刷是使用8X8像素的位图进行填充的,而不是像素点。效率高
//获取系统画刷(不要用deleteObject删除)
//hBrush=GetStockObject(LTGRAY_BRUSH);//浅灰色
//hBrush = GetStockObject(NULL_BRUSH);//不设置画刷,则是不进行填充 //设置自定义画刷createSolidBrush,createHatchBrush,createBrushIndirect
//hBrush=CreateSolidBrush(RGB(255,255,0));
//hBrush = CreateHatchBrush(HS_BDIAGONAL, RGB(0, 255, 0));//数字是样式 查手册
LOGBRUSH bh[];
for (int i = ; i < ; i++)
{
bh[i].lbStyle = BS_HATCHED;
bh[i].lbHatch = i;
bh[i].lbColor = RGB(i * 4, , );
} //最后一个是系统画刷,不需要删除
bh[].lbStyle = BS_SOLID;
bh[].lbColor = RGB(, , ); //用于记录所需要删除的画刷
HBRUSH TotBrush[]; //绘制6个矩形,填充不同
for (int i = ; i < ;i++)
{
hBrush=CreateBrushIndirect(&bh[i]);
if (i < )
TotBrush[i] = hBrush;
SelectObject(hdc, hBrush);
Rectangle(hdc, + * i, , + * i, );
} for (int i = ; i < ;i++)
{
DeleteObject(TotBrush[i]);
} //替换画刷
// hOldBrush = SelectObject(hdc, hBrush);
//中间写字
// SetTextAlign(hdc,TA_CENTER);
// TextOut(hdc, rect.right / 2, rect.bottom / 2, L"this a test", 11);
// SetTextAlign(hdc, TA_LEFT);
// Ellipse(hdc, rect.right / 4, rect.bottom / 4 , rect.right * 3 / 4, rect.bottom * 3 / 4); SelectObject(hdc, hOldBrush);
EndPaint(hwnd, &ps);
break;
case WM_DESTROY:
//DeleteObject(hBrush);//必须是自定义画刷
PostQuitMessage();
return ;
} return DefWindowProc(hwnd, message, wParam, lParam);
}
学习windows编程 day4 之 设置画刷的更多相关文章
- 学习windows编程 day4 之 矩形的操作
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day3 之 设置当前的背景颜色
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 盯裆猫
写着写着就困了.... 看这些测量数据就算了,是对各种函数的练习 #include <windows.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT ...
- 学习windows编程 day4 之 自定义映射
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之视口和窗口
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 学习windows编程 day4 之 绘制随机矩形和peekMessage
#include <windows.h> #include <strsafe.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT messa ...
- 学习windows编程 day4 之 多边矩形填充
#include <windows.h> #include <math.h> LRESULT CALLBACK WndProc(HWND hwnd, UINT message, ...
- 学习windows编程 day4 之 映射模式
LRESULT CALLBACK WndProc(HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam) { HDC hdc; PAINTSTRU ...
- 有一定基础的 C++ 学习者该怎样学习 Windows 编程?
人的心理有个奇异的特性:一项知识一旦学会之后,学习过程中面临的困惑和不解非常快就会忘得干干净净,似乎一切都是自然而然,本来就该这种.因此,关于「怎样入门」这类问题,找顶尖高手来回答,未必能比一个刚入门 ...
随机推荐
- HttpServletResponse类学习
/*//2) 乱码的解决. //设置服务器输出的编码为UTF-8---在BaseServlet处已经已经进行了设置 response.setCharacterEncoding("UTF-8& ...
- CentOS7 卸载mariadb 安装mysql的过程:
1. 检查安装的mariadb rpm -qa |grep mariadb 得到已经安装的安装包 mariadb-libs-5.5.56-2.el7.x86_64mariadb-devel-5.5.5 ...
- DVWA的安装与简单使用
参考资料: http://www.freebuf.com/articles/web/119150.html 尝试使用linux机器安装,但是因为下载php版本以及各种兼容性的问题耗时较长, 所以后来选 ...
- ubuntu16安装MySQL
MySQL 是一种开源数据库管理系统,通常作为流行的LAMP(Linux,Apache,MySQL,PHP / Python / Perl)堆栈的一部分安装.它使用关系数据库和SQL(结构化查询语言) ...
- Delphi2007卸载后无法再安装
Win7下卸载delphi2007后重新安装问题: 1.Delphi/C++ must be installed first 2.could not access network loacation/ ...
- 【gridview增删改查】数据库查询后lodop打印
ASP.NET中使用gridview可以很容易的把需要的数据动态显示在前台,还可以在表格里加入列进行增删改查,每次点击的时候重新加载数据,gridview也提供了分页等功能,还有一些模版让显示在前台的 ...
- sorted新用法
- maven-assembly-plugin把java工程打包成为一个可执行的jar包
用Java写了一个小工具,使用maven java 工程.写完后,想打包成一个可执行的jar包. 使用maven的插件maven-assembly-plugin pom.xml里添加 <buil ...
- AJAX--总结
AJAX 2018-9-6 14:42:53 AJAX简介 HTTP协议------>HTTP权威指南 请求:客户端去向服务端请求一个文件 响应:服务端把对应的文件内容返回给客户端, ...
- HDU-2087-KMP-水题
纯KMP #include <cstdio> #include <algorithm> #include <cstring> #include <ctype. ...