# 一、画刷类型
* https://docs.microsoft.com/zh-cn/windows/win32/gdi/logical-brush-types
* ![](https://img.kancloud.cn/98/8e/988eb96aed764fe0ab157c6bd7a8119e_279x112.png)
* 有许多种,选个最简单的solid brush
# 二、函数solidbrush 创建纯色画刷
```
HBRUSH CreateSolidBrush( COLORREF color ); //C++
::CreateSolidBrush = g.api("CreateSolidBrush","ptr(int crColor)"); //aardio提取函数
```
# 三、过程
个人理解的,不知道对不对
![](https://img.kancloud.cn/17/59/1759a1ef0e997a1e91ab52dad4edf386_480x302.png)
# 四、代码
* 按上面的过程写,代码如下: 同时把画笔样式设置成不同样式结果不一样也体现出来了
```
winform.custom.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0xF/*_WM_PAINT*/ {
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
// 创建 画笔样式为0时
var hBrush = ::CreateSolidBrush(0x83B314)
var hPen = ::CreatePen(0/*_PS_SOLID*/,50,0x0000FF)
// 放入hdc
var oBrush = ::SelectObject(hdc,hBrush)
var oPen = ::SelectObject(hdc,hPen)
// 绘图
::Ellipse(hdc,50,100,250,300)
// 还原画笔画刷
::SelectObject(hdc,oBrush)
::SelectObject(hdc,oPen)
// 删除画笔画刷
::DeleteObject(hBrush)
::DeleteObject(hPen)
// 创建 画笔样式为6时
看看与0的区别
var hBrush = ::CreateSolidBrush(0x83B314)
var hPen = ::CreatePen(6/*_PS_INSIDEFRAME*/,50,0x0000FF)
// 放入hdc
var oBrush = ::SelectObject(hdc,hBrush)
var oPen = ::SelectObject(hdc,hPen)
// 绘图
::Ellipse(hdc,300,100,500,300)
// 还原画笔画刷
::SelectObject(hdc,oBrush)
::SelectObject(hdc,oPen)
// 删除画笔画刷
::DeleteObject(hBrush)
::DeleteObject(hPen)
var hPen = ::CreatePen(0/*_PS_SOLID*/,1,0xFFFFFF)
var oPen = ::SelectObject(hdc,hPen)
::MoveToEx(hdc,0,100,::POINTF())
::LineTo(hdc,width,100)
::MoveToEx(hdc,0,300,::POINTF())
::LineTo(hdc,width,300)
::SelectObject(hdc,oPen)
::DeleteObject(hPen)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
}
}
```
* 实际上aardio已为我们封装好了,应用如下
```
winform.custom2.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0xF/*_WM_PAINT*/ {
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
gdi.selectBrush(
function(hdc,pen,brush){
::Ellipse(hdc,50,50,300,200)
},hdc,0x83B314,0x0000FF,5)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
}
}
```
* 运行一下
![](https://img.kancloud.cn/9a/7b/9a7b4bb909151b22db969c104919b42a_691x677.png)
- CChart
- CChart库
- custom窗口
- 标题、坐标轴名称、图例
- 网格、背景
- 常用参数
- 曲线
- 方波图
- 工具提示
- 示波器
- mdf
- 读取IDBlock
- 数据类型
- HDBlock
- 类小知识
- 小知识点
- io读取二进制文件
- string.load()一次读取二进制文件
- 智能提示
- 杂项
- 读取txt文件
- 读取txt文件02
- 计时器
- 隔一秒换背景颜色
- 关于time的库
- gdi
- 绘点
- 绘线
- 绘线 说明1
- 绘线 说明2
- PolyLine 一次多点绘线
- 绘曲线
- 绘线 注意点
- MoveToEx
- 画笔
- 预定义对象
- 使用预定义pen
- 自定义画笔
- 其它
- 画刷
- 自定义创建画刷
- 形状
- 矩形
- 圆角矩形
- 多边形 扇图
- 扇形 和 弦图
- 椭圆
- 填充矩形
- Arc
- api
- BeginPaint()
- EndPaint()
- TextOutW()
- SelectObject()
- gdi函数
- apiList
- 坐标转换
- 坐标转换api
- 小提示
- 直接调用api函数
- gdip
- 入门-画图形
- 初始化+反初始化
- 创建graphics
- 创建画笔
- gdip颜色
- 画笔样式
- 画直线
- 画形函数
- 文字输出