绘图二 框图 画笔 画刷

/* 
 * 绘图
 * 
 * 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);

}

你可能感兴趣的:(绘图二 框图 画笔 画刷)