CDC::Pie
通过绘制中心和两个端点由直线连接的椭圆弧线绘制一个扇形类型楔子。
BOOL Pie(
int x1,
int y1,
int x2,
int y2,
int x3,
int y3,
int x4,
int y4
);
BOOL Pie(
LPCRECT lpRect,
POINT ptStart,
POINT ptEnd
);
参数
x1
指定边框的左上角的x坐标(以逻辑单位)。y1
指定边框的左上角的y坐标(以逻辑单位)。x2
指定边框右下角的x坐标(以逻辑单位)。y2
指定边框的右下角的y坐标(以逻辑单位)。x3
指定弧线的x坐标起点(在逻辑单位)。该弧点不必完全位于。y3
指定弧线的y坐标起点(在逻辑单位)。该弧点不必完全位于。x4
指定弧线的终结点的x坐标(以逻辑单位)。该弧点不必完全位于。y4
指定弧线的终结点的y坐标(以逻辑单位)。该弧点不必完全位于。lpRect
指定边框。您可以通过一 CRect 对象或指向一 RECT 结构此参数的。ptEnd
指定弧线的终结点。该弧点不必完全位于。您可以通过一 POINT 结构或一 CPoint 对象此参数的。
返回值
非零,如果函数运行成功;否则为0。
备注
弧的核心是 x1、 y1、 x2和 y2 指定的边框的中心(或 lpRect)。启动和终结点弧线由 x3、 y3、 x4和 y4 指定(或 ptStart 和 ptEnd)。
弧线绘制了将向选定的笔,操作。左转。两个附加的行从弧线中心的每个终点绘制。扇形类型区域填充当前画笔。如果 x3 等于 x4,并 y3 等于 y4,其结果与单个行的一个椭圆从椭圆的中心到点(x3,y3)或(x4,y4)。
此功能用于绘制该图中扩展到,但不包括右侧和底部坐标。这意味着运行的高度。y2 – y1 和该图中的宽度是 x2 – x1。宽度和边框的高度小于2个单位和少于32,767个单位必须大。
示例
void CDCView::DrawPie(CDC* pDC)
{
// Fill the client area with a simple pie chart. A
// big blue slice covers 75% of the pie, from
// 6 o'clock to 3 o'clock. This portion is filled
// with blue and has a blue edge. The remaining 25%
// is filled with a red, diagonal hatch and has
// a red edge.
// Get the client area.
CRect rectClient;
GetClientRect(rectClient);
// Make a couple of pens and similar brushes.
CPen penBlue, penRed;
CBrush brushBlue, brushRed;
CBrush* pOldBrush;
CPen* pOldPen;
brushBlue.CreateSolidBrush(RGB(0, 0, 255));
brushRed.CreateHatchBrush(HS_FDIAGONAL, RGB(255, 0, 0));
penBlue.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(0, 0, 255));
penRed.CreatePen(PS_SOLID | PS_COSMETIC, 1, RGB(255, 0, 0));
// Draw from 3 o'clock to 6 o'clock, counterclockwise,
// in a blue pen with a solid blue fill.
pOldPen = pDC->SelectObject(&penBlue);
pOldBrush = pDC->SelectObject(&brushBlue);
pDC->Pie(rectClient,
CPoint(rectClient.right, rectClient.CenterPoint().y),
CPoint(rectClient.CenterPoint().x, rectClient.right));
// Draw the remaining quarter slice from 6 o'clock
// to 3 o'clock, counterclockwise, in a red pen with
// the hatched brush.
pDC->SelectObject(&penRed);
pDC->SelectObject(&brushRed);
// Same parameters, but reverse start and end points.
pDC->Pie(rectClient,
CPoint(rectClient.CenterPoint().x, rectClient.right),
CPoint(rectClient.right, rectClient.CenterPoint().y));
// Restore the previous pen.
pDC->SelectObject(pOldPen);
}
要求
Header: afxwin.h