以API的稿贺AngleArc为例:
//函数原型
BOOL AngleArc(
HDC hdc,// handle to device context
int X, // x-coordinate of circle's center
int Y, // y-coordinate of circle's center
DWORD dwRadius, // circle's radius
FLOAT eStartAngle, // arc's start angle
FLOAT eSweepAngle // arc's sweep angle
)
//具体使用:如圆心(20,20),樱哪半径15,从pi/到pi/2。
AngleArc(hdc,20,20,15,pi,-pi/2)//eSweepAngle是相对起始角度键颂派计算的角度值
VC++画圆形可以使用API函数:Ellipse(int x1, int y1, int x2, int y2);其画圆的原理是矩形的内切圆,四个参数举袜埋中的前两个是矩形左上角坐标,后两个是矩形右下角坐标。VC++画图形前得先有一块画布DC即设备上下文。下面个例子:
void CrrDlg::PaintCircle() //画实心圆函数{CDC *pDC = this->GetDC()//获取DCCBrush brush,*oldbrush //画刷//通过定时器中num递增,实现红色圆形与绿色圆形交替出现,即闪灯现象if (num%2){//num为定时器计数参数,正蚂其为偶数时画红色圆形brush.CreateSolidBrush(RGB(255,0,0)) }else{ //num为奇数时,画绿色圆形brush.CreateSolidBrush(RGB(0,255,0)) } oldbrush=pDC->SelectObject(&brush)pDC->Ellipse(10,10,100,100) pDC->Ellipse(110,10,200,100)pDC->SelectObject(oldbrush) ReleaseDC(pDC)} void CrrDlg::OnTimer(UINT_PTR nIDEvent) //定时器{num++ PaintCircle() CDialogEx::OnTimer(nIDEvent)} 画空心圆环需要使用画笔好简CPen,画法一样。
以下方法可在MFC和控制台中都可以实现:1.HDC hdc = GetDC(HWND hWnd)获得设备上下文的客户区一个指定的窗口或整个屏幕
eg:如果是在窗口类中可以:
HDC hdc = GetDC(this->磨举m_hWnd)
2.在窗口区画点。
SetPixel(
hdc,
x, /枣薯/ 横坐标
y , // 纵坐标
RGB(100,100,100))//点的颜色。
3. 画线
MoveToEx(
HDC hdc,
int X, // 横坐标
int Y, /凳游者/ 纵坐标
LPPOINT lpPoint //保存先前的点的位置,在这里你可以直接写NULL.
)
LineTo(
HDC hdc, // device context handle
int nXEnd, // x-coordinate of line's ending point
int nYEnd // y-coordinate of line's ending point
)
4.画圆
函数:
Ellipse(
HDC hdc, // handle to device context
int nLeftRect, // x-coord of bounding rectangle's upper-left corner
int nTopRect, // y-coord of bounding rectangle's upper-left corner
int nRightRect, // x-coord of bounding rectangle's lower-right corner
int nBottomRect // y-coord of bounding rectangle's lower-right corner
)
eg :Ellipse(hdc,0,0,100,100)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)