# 使用的函数
* 函数原型
```
HPEN CreatePen(
int iStyle, // 是画笔的类型,比如是实线,还是虚线等等。
int cWidth, // 线的宽度
COLORREF color // 线的颜色
);
```
* 画笔类型:
```
0/*_PS_SOLID*/ //实线
2/*_PS_DOT*/ //虚线 cWidth=1
1/*_PS_DASH*/ //点线 cWidth=1
3/*_PS_DASHDOT*/ //点划线 cWidth=1
4/*_PS_DASHDOTDOT*/ //点-点-划线 cWidth=1
5/*_PS_NULL*/ //画笔不能画图
6/*_PS_INSIDEFRAME*/ //画笔在由椭圆,矩形、圆角矩形、饼图以及由弦等生成的封闭对象框时,画笔宽度向内扩展。
```
# aardio封装
* 封装函数
```
selectPen = function(proc,hdc,color,width,style,brush){
var pen = ::CreatePen(style:0/*_PS_SOLID*/,width:1,color);
var oPen = ::SelectObject(hdc,pen );
proc(hdc,pen,brush);
::SelectObject(hdc,oPen);
::DeleteObject(pen);
}
```
* brush不传入也是可以的,在自动提示时就是没有的
# 效果
* 黑色的背景画红色线,但出现了白色,可能是线条也有背景吧,是可以更改的。
![](https://img.kancloud.cn/cb/fc/cbfcdba56660690057011aed815504a3_776x397.png)
# 代码
```
import win.ui;
/*DSG{{*/
var winform = win.form(text="aardio form";right=759;bottom=357)
winform.add(
custom={cls="custom";text="自定义控件";left=53;top=39;right=679;bottom=146;bgcolor=0;z=1};
custom2={cls="custom";text="自定义控件";left=57;top=185;right=680;bottom=307;bgcolor=0;z=2}
)
/*}}*/
import gdi
import console
console.open()
winform.custom.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0xF/*_WM_PAINT*/ {
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
gdi.selectPen(
function(hdc,pen){
gdi.drawLine(hdc,50,50,width-50,50)
},hdc,0x0000FF,1,4/*_PS_DASHDOTDOT*/)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
else {
}
}
}
winform.custom2.wndproc = function(hwnd,message,wParam,lParam){
select(message) {
case 0xF/*_WM_PAINT*/ {
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
var hPen = ::CreatePen(1,1,0x0000FF)
var oPen = ::SelectObject(hdc,hPen)
//::Gdi32.MoveToEx(hdc,50,50,null );
//::MoveToEx(hdc,50,50,null)
::MoveToEx(hdc,50,50,::POINTF())
::LineTo(hdc,width-50,50)
::SelectObject(hdc,oPen)
::DeleteObject(hPen)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
else {
}
}
}
winform.show();
win.loopMessage();
return winform;
```
- 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颜色
- 画笔样式
- 画直线
- 画形函数
- 文字输出