基于VC++的圆弧编程

基于VC++的圆弧编程,第1张

可以调用API的AngleArc()函数,或者CDC::AngleArc()函数

以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)


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12225906.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存