# 效果
![](https://img.kancloud.cn/4c/db/4cdb5a6e71f4657b56f37844805df6e1_756x625.png)
# 代码
```
import gdi
import console
console.open()
winform.custom.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
case 0xF/*_WM_PAINT*/{
var ps = ::PAINTSTRUCT();
var pt = ::POINTF()
var hdc = ::BeginPaint(hwnd,ps);
// 定义一个起点
::MoveToEx(hdc,50,50,pt)
// 从起点连线到一个点
::LineTo(hdc,100,100)
::LineTo(hdc,150,50)
::LineTo(hdc,200,100)
::LineTo(hdc,250,50)
::LineTo(hdc,300,100)
::EndPaint(hwnd,ps)
}
};
}
winform.custom2.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
case 0xF/*_WM_PAINT*/{
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
// 用封装过的drawLine画线,把第一个点当作起点
gdi.drawLine(hdc,50,50,100,100,150,50,200,100,250,50,300,100)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
};
}
winform.custom3.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
case 0xF/*_WM_PAINT*/{
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
var points = {
int value[12] = {50;50;100;100;150;50;200;100;250;50;300;100}
}
// 把第一个点当作起点
::Polyline(hdc,points,6)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
};
}
winform.custom4.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
case 0xF/*_WM_PAINT*/{
gdi.paint( hwnd,
function( hdc,width, height,rcPaint,fErase,paintStruct ){
var points = {
int value[12] = {50;50;100;100;150;50;200;100;250;50;300;100}
}
// 用默认的起点开始画线,默认的起点(0,0)
::PolylineTo(hdc,points,6)
::BitBlt(hdc, 0, 0, width, height, hMemDc, 0, 0, 0xCC0020/*_SRCCOPY*/);
}
);
}
};
}
winform.custom5.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
case 0xF/*_WM_PAINT*/{
var ps = ::PAINTSTRUCT();
var pt = ::POINTF()
var hdc = ::BeginPaint(hwnd,ps);
// 定义点的结构体 起点到终点
var points = {
int value[12] = {50;50;100;100;150;50;200;100;250;50;300;100}
}
::Polyline(hdc,points,6)
::EndPaint(hwnd,ps)
}
};
}
winform.custom6.wndproc = function(hwnd,message,wParam,lParam){
select( message ) {
case 0xF/*_WM_PAINT*/{
var ps = ::PAINTSTRUCT();
var pt = ::POINTF()
var hdc = ::BeginPaint(hwnd,ps);
// 定义点的结构体 经过的点
var points = {
int value[12] = {50;50;100;100;150;50;200;100;250;50;300;100}
}
::PolylineTo(hdc,points,6)
::EndPaint(hwnd,ps)
}
};
}
```
- 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颜色
- 画笔样式
- 画直线
- 画形函数
- 文字输出