# Ellipse函数的用法

• hdc：设备环境句柄。

• nLeftRect：指定限定矩形左上角的X坐标。

• nTopRect：指定限定矩形左上角的Y坐标。

• nRightRect：指定限定矩形右下角的X坐标。

• nBottomRect：指定限定矩形右下角的Y坐标。

Windows NT：若想获得更多错误信息，请调用GetLastError函数。

Windows 95和Windows 98：限定矩形的坐标值之和不能超过32767。nLeftRect与nRigthRect或nTopRectn与BottomRect之和不能超过32767

## 注意：

Ellipse(x1,y1,x2,y2),你必须确保x2-x1==y2-y1,这样你画出的就是正圆,而不是椭圆了.

//画一个椭圆中点算法
void CGraphicsView::midleEllipse(int xCenter, int yCenter, int Rx, int Ry, HDC dc)
{
int Rx2 = Rx*Rx;
int Ry2 = Ry*Ry;
int twoRx2 = 2*Rx2;
int twoRy2 = 2*Ry2;
int p;
int x=0;
int y=Ry;
int px = 0;
int py = twoRx2*y;
SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
//Region 1
p = (int)(Ry2-Rx2*Ry+0.25*Rx2);
while(px<py)
{
x++;
px+=twoRy2;
if(p<0)
p+=Ry2+px;
else
{
y--;
py-=twoRx2;
p+=Ry2+px-py;
}
SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
}
//Region 2
p = (int)(Ry2*(x+0.5)*(x+0.5)+Rx2*(y-1)*(y-1)-Rx2*Ry2);
while(y>0)
{
y--;
py-=twoRx2;
if(p>0)
p+=Rx2-py;
else
{
x++;
px+=twoRy2;
p+=Rx2-py+px;
}
SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
}
}
// 画圆
void circleMidpoint(int xCenter,int yCenter,int radius,HDC dc)
{
int x = 0;
while(x<y)
{
x++;
if(p<0)
{
p+=2*x+1;
}
else
{
y--;
p+=2*(x-y)+1;
}
SetPixel(dc,xCenter+x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter+y,RGB(255,0,0));
SetPixel(dc,xCenter+x,yCenter-y,RGB(255,0,0));
SetPixel(dc,xCenter-x,yCenter-y,RGB(255,0,0));
SetPixel(dc,xCenter+y,yCenter+x,RGB(255,0,0));
SetPixel(dc,xCenter-y,yCenter+x,RGB(255,0,0));
SetPixel(dc,xCenter+y,yCenter-x,RGB(255,0,0));
SetPixel(dc,xCenter-y,yCenter-x,RGB(255,0,0));
}
}

|
2月前
|

8.1 Windows驱动开发：内核文件读写系列函数

30 0
|
2月前
|
Linux 编译器 C语言
C++ | 探究函数重载的原理：函数名修饰【基于Windows + Linux双系统】
C++ | 探究函数重载的原理：函数名修饰【基于Windows + Linux双系统】
49 0
|
4月前
|
JavaScript Java Windows

32 0
|
9月前
|
C++ Windows
C++ 调用windows系统DOS命令的函数 system(char* command)
C++ 调用windows系统DOS命令的函数 system(char* command)
146 0
|
C# Windows 容器
C#面向对象程序设计课程实验二： 实验名称：Windows 窗体程序
C#面向对象程序设计课程实验二： 实验名称：Windows 窗体程序
159 0
|
Windows
Windows进程创建函数
Windows进程创建函数
88 0
|
Java Linux iOS开发
JNI用C加载JDK产生JVM虚拟机，并运行JAVA类main函数(MACOS/LINUX/WINDOWS)
JNI用C加载JDK产生JVM虚拟机，并运行JAVA类main函数(MACOS/LINUX/WINDOWS)
112 0
|
Java Windows
JDK windows加载字体文件的函数
JDK windows加载字体文件的函数
73 0
|
Windows
Windows下实现gettimeofday()函数
Windows下实现gettimeofday()函数
262 0
|
Shell Windows
Windows程序设计打开另一个程序的三种方法
Windows程序设计打开另一个程序的三种方法
468 0

• 云迁移中心

更多

更多