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));
	}
}

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • c花体复制_花体

    c花体复制_花体路由器之家网今天精心准备的是《花体》,下面是详解!26个英文字母花体和圆体写法最好是大小写都有,要图片…最好是大小写都有,要图片26个花体和圆体英文字母如下1、圆体“圆体英文”是国内的一种说法,国外并没有与“圆体”相关的英文单词。国内常指代的圆体英文书法包括有手写印刷体、意大利体(或者意大利斜体、斜体)、圆体(国产圆体)这种字体简单易懂,写出来很好,是现在国内外常用的日常手写字体。普通的钢…

  • 关于大学毕业 总结的文章2000_如何写大学学期总结

    关于大学毕业 总结的文章2000_如何写大学学期总结本文十天后设置为粉丝可见,喜欢的提前关注不要白嫖请点赞不要白嫖请点赞不要白嫖请点赞文中提到的书我都有电子版,可以评论邮箱发给你。文中提到的书我都有电子版,可以评论邮箱发给你。文中提到的书我都有电子版,可以评论邮箱发给你。本篇文章应该算是Java后端开发技术栈的,但是大部分是基础知识,所以我觉得对任何方向都是有用的。1、数据结构数据结构是计算机存储、…

  • 基于豆瓣影评数据的文本分析系统【数据爬取+数据清洗+数据库存储+LDA主题挖掘+词云可视化】「建议收藏」

    基于豆瓣影评数据的文本分析系统【数据爬取+数据清洗+数据库存储+LDA主题挖掘+词云可视化】「建议收藏」本分析中很多的工作都是基于评论数据来进行的,比如:滴滴出行的评价数据、租房的评价数据、电影的评论数据等等,从这些语料数据中能够挖掘出来客户群体对于某种事物或者事情的看法,较为常见的工作有:舆情分析、热点挖掘和情感分析。如果想要了解关于文本分类或者是情感分析相关的工作内容,可以阅读我的《数据建模实战》专栏文章,下面是链接信息:…

  • js的sort排序方法_sort对象排序

    js的sort排序方法_sort对象排序sort()方法用于对数组的元素进行排序,并返回数组。默认排序顺序是根据字符串Unicode码点。语法:array.sort(fun);参数fun可选。规定排序顺序。必须是函数。注:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。如果想按照其他规则进行排序,就需要提供比较函数,该函数要比较两个值,然后返回…

  • 不含重复字符的最长子串长度JAVA_字符串回文判断

    不含重复字符的最长子串长度JAVA_字符串回文判断给你一个二进制字符串 s ,现需要将其转化为一个 交替字符串 。请你计算并返回转化所需的 最小 字符交换次数,如果无法完成转化,返回 -1 。交替字符串 是指:相邻字符之间不存在相等情况的字符串。例如,字符串 “010” 和 “1010” 属于交替字符串,但 “0100” 不是。任意两个字符都可以进行交换,不必相邻 。示例 1:输入:s = “111000”输出:1解释:交换位置 1 和 4:”111000″ -> “101010” ,字符串变为交替字符串。示例 2:输入:s =

  • golang 进制转换_java string转integer

    golang 进制转换_java string转integer1-Youmaywriteyourconversionfunction(Fastest):funcString(nint32)string{buf:=[11]byte{}pos:=len(buf)i:=int64(n)signed:=i<0ifsigned{i=-i}for{pos–buf[pos],i=’0’+byt

发表回复

您的电子邮箱地址不会被公开。

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