windows程序设计第五版_windows程序设计入门

windows程序设计第五版_windows程序设计入门Ellipse函数的用法函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, nRightRect, int nBottomRect);参数:hdc:设备环境句柄。nLeftRect:指定限定矩形左上角的X坐标。nTopRect…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

Ellipse函数的用法

函数功能:该函数用于画一个椭圆,椭圆的中心是限定矩形的中心,使用当前画笔画椭圆,用当前的画刷填充椭圆。

函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, nRightRect, int nBottomRect);

参数:

  • hdc:设备环境句柄。

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

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

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

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

返回值:如果函数调用成功,返回值非零;如果函数调用失败,返回值是0。

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

备注:椭圆既不使用也不改变当前位置。

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

注意:

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

不用Windows自带的画椭圆函数画椭圆方法参考

代码如下:


//画一个椭圆中点算法
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;
	int y = radius;
	int p=1-radius;
	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));
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/170964.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • nginx负载均衡并发量(应用服务器高并发解决方案)

    1.什么是负载均衡?当一台服务器的性能达到极限时,我们可以使用服务器集群来提高网站的整体性能。那么,在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡问题。下…

    2022年4月14日
    66
  • vue 组件插槽_vue插槽的使用

    vue 组件插槽_vue插槽的使用插槽应用场景当封装一个组件后,内部有一些地方待定功能暴露给外界来写。就好比于el-table中的单个表格内部可能是下拉框,或者是一些文本输入。需要用template来嵌套使用子组件<template><div><divv-for=”iteminarrData”:key=”item.id”><slotname=”todo”:row=”item”></slot><

    2022年9月23日
    2
  • 【详细】3分钟教会你使用USDT钱包「建议收藏」

    【详细】3分钟教会你使用USDT钱包「建议收藏」小编为您介绍一款安全系数非常高的USDT钱包,之所以安全系数非常高是因为去中心化模式,USDT钱包文件或私钥可以脱离网络储存,比如可以备份在手机里,硬盘里,U盘里,网盘里,甚至拿笔写在纸上。我们经常听说用户一般会把大部分数字资产存储到冷钱包,主要是为了安全的考虑,而把少量的数字资产存储在交易所热钱包,以方便交易,现在USDT钱包居多的是中心化钱包,用户的数字货币储存在交易所里,换句话说非常不安全,因为你不知道你的USDT钱包文件与私钥,交易所被黑客攻击或者自行关闭你是无能为力只能眼睁睁看这你的币子任由他

    2022年5月21日
    520
  • 随机函数生成随机正负小数(c语言自动生成随机数)

    原文转自:http://zhidao.baidu.com/question/560968122001783204.htmlC语言生成的随机数为无符号数,即都是正的。要想生成正负随机的,可以先通过模除限定返回,再减去对应的范围的中间值即可。比如,要获取-1000~+1000范围的随机数,总的数量为2001个,这样就可以通过代码rand()%2001使得到的结果限制在0-2000范围

    2022年4月16日
    85
  • c语言的stl库_c语言string库

    c语言的stl库_c语言string库今天推荐一个函数库glib注意不是glibc https://developer.gnome.org/glib/一直在抱怨,标准C中为什么没有类似于STL的标准容器,让全世界的程序员在数以万次的重复实现它们。不过,还算走运,有了glib,恶梦在此终结了。glib提供了动态数组、单/双向链表、哈希表、多叉树、平衡二叉树、字符串等常用容器,完全是面向对象设计的,实现得非常精致。

    2022年10月15日
    1
  • python drawcontours_2021-02-15 Python OpenCV drawContours()函数

    python drawcontours_2021-02-15 Python OpenCV drawContours()函数drawContours image contours contourIdx color thickness 1 lineType LINE 8 hierarchy noArray maxLevel INT MAX offset None 该函数用于绘制轮廓线或者填充轮廓线 如果参数 那么就绘制轮廓线 如果参数 则填充轮廓线内的区域 参数 image 目标图像 contour

    2025年8月30日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号