/*
* 绘图
*
* Rectangle(HDC, int, int, int, int); // 绘制矩形
* Ellipse(HDC, int, int, int, int); // 绘制椭圆
* RoundRect // 绘制圆角矩形
*
* Arc // 圆弧
* Chord // 弓形
* Pie // 扇形
* PolyBezier // 贝赛尔曲线
*
* SelectObject // 选择一个GDI对象
*
* HPEN // 画笔句柄
* CreatePen // 创建画笔
* CreatePenIndirect // 创建逻辑画笔
* LOGPEN // 逻辑画笔
*
* DeleteObject // 删除一个GDI对象
*
* GetStockObject // 获取备用对象 BLACK_PEN, GRAY_BRUSH
*
* GetObject(hPen, sizeof(LOGPEN), (LPVOID)&logpen); // 根据画笔句柄,获得LOGPEN结构
*
* GetCurrentObject(hdc, OBJ_PEN) // 获得当前选入的画笔句柄
*
* SetBkColor // 设置背景色
* GetBkColor // 获得背景色
*
* SetBkMode // 设置背景模式 OPAQUE(不透明),默认; TRANSPARENT(透明)
* GetBkMode // 获得背景模式
*
* 光栅操作 ROP (raster operation); ROP2 二元光栅操作
* SetROP2 // 设置绘图模式
* GetROP2
*
* HBRUSH // 画刷句柄
*
* SelectObject(hdc, GetStockObject(NULL_PEN)) // 绘制不含边框的图形
* SelectObject(hdc, GetStockObject(NULL_BRUSH))// 绘制不填充内部图形的边框
*
* Polygon // 绘制多边形
* PolyPolygon
*
* SetPolyFillMode // 多边形填充模式 默认ALTERNATE(交替); WINDING(螺旋)
*
* 五种方式建立画刷
* 1. CreateSolidBrush
* 2. CreateHatchBrush // 阴影线画刷
* 3. CreatePatternBruash // 位图画刷
* 4. CreateDIBPatternBrushPt // 位图画刷
* 5. CreateBruashIndirect LOGBRUSH // 逻辑画刷
*
* GetObject(hBrush, sizeof(LOGBRUSH), (LPVOID)&logbrush);
*/
void DrawGraph(HDC hdc)
{
Rectangle(hdc, 10, 10, 200, 400);
Ellipse(hdc, 10, 10, 200, 400);
int xyCornerEllipse = 900 - 500; // 使用相同的值,可以使角比较圆,参考P124
RoundRect(hdc, 500, 100, 900, 700, xyCornerEllipse, xyCornerEllipse);
}
void DrawGraph2(HDC hdc)
{
Pie(hdc,100, 100, 400, 200, 250, 100, 100, 250);
}
void DrawPen(HDC hdc)
{
HPEN hPen = CreatePen(PS_SOLID, 1, BLACK_PEN);
SelectObject(hdc, hPen);
// 画线
MoveToEx(hdc, 10, 10, NULL);
LineTo(hdc, 300, 10);
DeleteObject(SelectObject(hdc, GetStockObject(BLACK_PEN))); // 先选入,再删除
// 创建画笔二
LOGPEN logpen;
POINT pt;
pt.x = 1;
logpen.lopnStyle = PS_DASH;
logpen.lopnWidth = pt;
logpen.lopnColor = BLACK_PEN;
hPen = CreatePenIndirect(&logpen);
HGDIOBJ hOldPen = SelectObject(hdc, hPen);
MoveToEx(hdc, 10, 30, NULL);
LineTo(hdc, 300, 30);
DeleteObject(hOldPen);
}
绘图二 框图 画笔 画刷
最新推荐文章于 2023-02-28 19:43:40 发布