精华内容
下载资源
问答
  • 函数功能:该函数用于一个椭圆,椭圆的中心是限定矩形的中心,使用当前笔画椭圆,用当前的刷填充椭圆。 函数原型:BOOL Ellipse(HDC hdc, int nLeftRect, int nTopRect, nRightRect, int nBottomRect); 参数...

    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));
    	}
    }
    
    
    展开全文
  • 微信小程序-实现元素渐入渐动画效果-封装方法

    万次阅读 多人点赞 2018-08-15 11:31:24
    那没办法,只好自己写一个可以让元素渐入渐的,可复用的函数了。做到类似jQuery show()的效果 解决 寻根问题,发现wx_mini_program(下面称呼微信小程序为wxmp [差点叫成 (*´ノ皿`)mmp] )有一个全局的js逻辑文....

    开端

    之前一直使用堪称“万能”的jQuery处理用户交互的动画,近日开发微信小程序,微信小程序高度限制的语法和功能使开源函数可谓对其“无能为力”。
    那没办法,只好自己写一个可以让元素渐入渐出的,可复用的函数了。做到类似jQuery show()的效果

    原创文章,允许转载分享。但请转载请一定标明出处,这是起码的尊重
    本文章阅读前需要对微信小程序的动画api有所了解

    先看效果

    可以看到,动画效果十分流畅,高度复用,封装好后只需要三行代码实现动画
    预览

    解决

    1.寻根问底,发现wx_mini_program(下面称呼微信小程序为wxmp [差点叫成 (*´ノ皿`)mmp] )有一个全局的js逻辑文件,叫app.js,有意思,可以往里面塞自己写的object(函数数据等等),那就从那里入手吧
    2.在app.js中定义全局的动画函数

    App({
      //渐入,渐出实现 
      show : function(that,param,opacity){
        var animation = wx.createAnimation({
          //持续时间800ms
          duration: 800,
          timingFunction: 'ease',
        });
        //var animation = this.animation
        animation.opacity(opacity).step()
        //将param转换为key
        var json = '{"' + param + '":""}'
        json = JSON.parse(json);
        json[param] = animation.export()
        //设置动画
        that.setData(json)
      },
    
      //滑动渐入渐出
      slideupshow:function(that,param,px,opacity){
        var animation = wx.createAnimation({
          duration: 800,
          timingFunction: 'ease',
        });
        animation.translateY(px).opacity(opacity).step()
        //将param转换为key
        var json = '{"' + param + '":""}'
        json = JSON.parse(json);
        json[param] = animation.export()
        //设置动画
        that.setData(json)
      },
    
      //向右滑动渐入渐出
      sliderightshow: function (that, param, px, opacity) {
        var animation = wx.createAnimation({
          duration: 800,
          timingFunction: 'ease',
        });
        animation.translateX(px).opacity(opacity).step()
        //将param转换为key
        var json = '{"' + param + '":""}'
        json = JSON.parse(json);
        json[param] = animation.export()
        //设置动画
        that.setData(json)
      }
    })

    3.现在我们再看看调用这个函数的具体方法
    在wxml中,只需要设置animation绑定即可,以首页index为例

    // 这里是pages/page/index.wxml
    //使用view包裹需要动画的元素
    //class中定义动画开始前的初始样式,如透明度=0,向下偏移200px等,animtion属性填入绑定值
    <view class="init" animation="{{slide_up1}}">

    4.在该页的js中

    // 这里是pages/page/index.js
    //首先获取小程序实例,访问app.js中的函数
    this.app = getApp();
    //调用show函数,传参
    //注意:查看上面show函数定义查看参数含义
    //第一个参数是当前的页面对象,方便函数setData直接返回数据
    //第二个参数是绑定的数据名,传参给setData,详细见上面
    //第三个参数是上下滑动的px,因为class="init"定义初始该元素向下偏移了200px,所以这里使其上移200px
    //第四个参数是需要修改为的透明度,这里是1,表示从初始的class="init"中定义的透明度0修改到1
    this.app.slideupshow(this, 'slide_up1', -200, 1)

    5.让我们完善流程,达到预览图首页的效果(有延时的边上升边出现效果)
    wxml就是将各个容器分别绑定不同的变量,一个view容器就是一个动画单位(可以这样理解),如

    <view class="init" animation="{{slide_up1}}">
        <card>...</card>
    </view>
    <view class="init" animation="{{slide_up2}}">
        <card>...</card>
    </view>

    页面的js

    //onload时获取小程序实例
    onLoad: function (options) {
        this.app = getApp()
      },
    //页面展示时,触发动画
     onShow: function () {
        this.app.slideupshow(this, 'slide_up1', -200, 1)
    
        setTimeout(function () {
          this.app.slideupshow(this, 'slide_up2', -200, 1)
        }.bind(this), 200);
      },
    //页面隐藏时,触发渐出动画
     onHide: function () {
         //你可以看到,动画参数的200,0与渐入时的-200,1刚好是相反的,其实也就做到了页面还原的作用,使页面重新打开时重新展示动画
        this.app.slideupshow(this, 'slide_up1', 200, 0)
        //延时展现容器2,做到瀑布流的效果,见上面预览图
        setTimeout(function () {
          this.app.slideupshow(this, 'slide_up2', 200, 0)
        }.bind(this), 200);
      }

    其实上面就是实现高度复用的动画效果的解决方案了
    原创文章,允许转载分享。但请转载请一定标明出处,这是起码的尊重
    如有纰漏,敬请留言反馈

    这里写图片描述

    展开全文
  • 4.1程序控制流图

    万次阅读 多人点赞 2018-05-28 16:31:41
    程序控制流图,简称流图,是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。控制流图中包括两种图形符号:节点控制流线复合条件要分解为简单条件判定节点(谓词节点)由判定节点发出的边必须...

    程序控制流图,简称流图,是对程序流程图进行简化后得到的,它可以更加突出的表示程序控制流的结构。

    控制流图中包括两种图形符号:

    • 节点
    • 控制流线

    复合条件要分解为简单条件


    判定节点(谓词节点)

    • 由判定节点发出的边必须终止与某一个节点
    • 由边和节点所限定的范围被称为区域
    • 当对区域计数时,图形外的区域也应记为一个区域

    流程图转换为流图:

    一个节点包含1个或多个连续的无分支语句

    节点不允许含有复合节点


    单入单出的可以合并成一个节点


    展开全文
  • 程序生成控制流图和du-path

    千次阅读 热门讨论 2014-04-08 10:49:06
    最近上《源代码分析技术》这个课,老师让写一个程序,you

    最近上《源代码分析技术》这个课,老师让写一个程序,由一段c代码,生成生成控制流图和du-path,控制流图不用解释了,说一下du-path,这个术语是针对变量来说的,对于一个变量,它在使用时,分析之前的定义,如果该变量在定义和使用过程中都没有被再定义,则从定义到使用的路径成为一条du-path。

    1.使用lex和yacc

    网上源代码很多,主要说一个我的修改

    首先,要画控制流图,要找到关键字-while if for之类的有断点意义的词,在词法分析器中把这类词分出来

    在语法分析阶段,匹配部分,判断,有下列情况:

    1. 函数+变量-》使用
    2. 变量1+“=”变量2-》:使用变量2,定义变量1
    3. 变量1+"="数字-》:定义变量1
    4. 变量1+“== / !=”数字-》使用变量1
    5. 变量1+“== / !=”变量2-》使用变量1、使用变量2
    6. 变量1“+-*/”变量2-》使用变量1、使用变量2
    7. 变量1“+-*/”数字-》使用变量1
    8. 当然,还有别的,没有全部列出

    之后,生成的文件就是包含“关键字”和使用定义变量信息的表

    在读取du-path的时候,从下往上匹配就行

    画控制流图的时候,注意堆栈信息处理,把分析出的结果一次压栈,遇到一个}就匹配,如果是if语句,先扫描下面的语句是否有else,如果有,创建三个节点,if、if成立的代码、else,并且建立一个虚节点,作为if节点的退出节点,如果没有else,只需创建两个节点就行,再创建一个出口节点。

    if判断完之后,创建一个合并节点,并且当做普通语句压回栈中

    如果遇到的是while,则创建两个节点,一个内容节点,一个while节点,并且将两个节点分别连接(这个是相对别的而言的,其他语句只需要单箭头)

    当栈空的时候就是完成匹配了

    最后,用graphviz工具画出流程图即可

     

    展开全文
  • C语言程序设计实践(OJ)-初识函数

    千次阅读 2016-11-08 09:46:34
    这个问题可难坏了小编,小编在写一个查找m年到n年之间闰年的程序,却苦于判断闰年的函数不会写,据说 今天你有上机课,我就拿着这个问题来找你了–  闰年的条件是:能被4整除但不能被100整除,或能被400整除。#...
  • C语言程序设计(常用函数说明)

    千次阅读 2012-07-08 17:11:05
    C语言程序设计(常用函数说明) C 语言是1972年由美国的Dennis Ritchie设计发明的,并首次在UNIX操作系统的 DEC PDP-11计算机上使用。它由早期的编程语言 BCPL(Basic Combind Programming Language)发展...
  • 软件测试之控制流图

    万次阅读 多人点赞 2019-12-04 13:29:28
    为了应对软件工程考试,本文对控制流图常见考法进行整理,主要是针对软件评测师的题型来整理。...如何控制流图 常见结构的控制流图: 图1:常见结构的程序控制流图 对于复合条件,要分解为简单条件...
  • PyQt5实例 画板小程序

    万次阅读 多人点赞 2018-08-09 19:35:50
    由于知识有限,我目前只知道main函数可以作为一个应用程序的主要执行和入口点,因此,先编写一个main函数,这个可以作为pyQT程序的main函数框架 from PyQt5 . QtWidgets import QApplication import sys ...
  • 《LLH-Graphics C++图形函数库》使用说明 1 前言 博大纾深而又高度灵活的C++语言的对于程序设计的初学者来说是一座难以翻越的高幱。不仅如此,他们还要在很长一段时间内忍受让人厌恶的控制台(Console)界面,...
  • matlab函数大全-matlab函数大全.doc 比较白痴的东西,不过对初学者也许有用,特分享一下。不要喷我哦!函数具体用法可以用help查一下。附件内容与下面一样的。 Aabs 绝对值、模、字符的ASCII码值 acos 反余弦 ...
  • 精通DirectX.3D图形与动画程序设计.pdf

    热门讨论 2013-02-17 16:40:18
    中文名: 精通DirectX 3D图形与动画程序设计 原名: 精通DirectX 3D图形与动画程序设计 别名: 游戏编程, 游戏开发 作者: 王德才 资源格式: PDF 版本: 扫描版 出版社: 人民邮电出版社书号: 9787115159717发行时间: 2007...
  • Java小程序之你我猜

    千次阅读 多人点赞 2017-02-27 12:00:12
    Java小程序之你我猜 一、前言: 你我猜是一款休闲益智的游戏,可以考验双方的默契,当然,功也是一个方面;昨天我们写了个简单的网络画板,能够将一个客户端上的图形实时传递给另一个客户端;其实 你...
  • 微信小程序页面无限滚动

    千次阅读 2019-04-29 09:55:30
    当前的小程序非常火,开发起来也很快,框架很多,今天讲下mpvue这个框架实现页面无限滚动,滚动到底加载新数据。 问题 微信小程序不支持Dom, 那么要实现一个无限的滚动效果那不是蛋疼? mpvue+scroll-view实现 ...
  • MATLAB函数速查手册

    千次阅读 多人点赞 2018-03-25 09:06:26
    《MATLAB函数速查手册》较全面地介绍了MATLAB的函数,主要包括MATLAB操作基础、矩阵及其基本运算、与数值计算相关的基本函数、符号运算的函数、概率统计函数、绘图与图形处理函数、MATLAB程序设计相关函数、Simulink...
  • C函数

    2012-06-03 16:37:40
    第1章 数学函数 1 1.1 _clear87函数:清除浮点状态字 1 1.2 _status87函数:取浮点状态字 2 1.3 abs函数:求整数的绝对值 3 1.4 acos、acosl函数:反余弦函数 4 1.5 asin、asinl函数:反正弦函数 5...
  • python turtle 绘制图像的函数

    千次阅读 2018-10-31 11:34:49
     Turtle库是Python语言中一个很流行的绘制图像的函数库,想象一个小乌龟,在一个横轴为x、纵轴为y的坐标系原点,(0,0)位置开始,它根据一组函数指令的控制,在这个平面坐标系中移动,从而在它爬行的路径上绘制了...
  • 配置使用OpenCV库在上节中我们已经生成了可用于VS2015或者QT5 with MinGW开发的OpenCV库,接下来我们写一个简单的程序测试一下。 因为我电脑上装了QT而没有装VS2015,所以后续笔记的... 下面给QT上的代码示例,使用Qt
  • FlowDroid获取APK的函数调用

    千次阅读 热门讨论 2017-03-21 17:48:53
    使用FlowDroid这种工具最糟心的就是看不懂的...这篇博客和下一篇博客要介绍的是使用FlowDroid绘制APK的函数调用图(Call Graph)和每个函数的控制流图关于绘制dot图。这一篇博客先介绍获取函数调用图。 和画图相关的有
  • matlab数字图像灰度分布直方图函数

    千次阅读 2020-09-29 15:59:56
    本文主要介绍数字图像灰度直方分布的绘制方法,包括使用matlab的imhist函数和自己编写对应的功能程序。 背景知识 数字图像在计算机中的保存形式为矩阵,矩阵中每个元素值保存着图像对应像素的信息。彩色图片为三维...
  • Matlab图像处理函数大全(建议收藏)

    千次阅读 多人点赞 2020-12-11 20:32:01
    文章目录第1章: 图像显示与图像文件输入输出函数第2章: 图形绘制第3章: 图像类型和类型转换第4章: 图形用户界面工具第5章: 空间变换和图像配准第6章: 图像分析和统计第7章: 图像代数运算第8章: 图像增强第9...
  • MATLAB 函数大全

    千次阅读 2012-07-30 13:30:51
    附录1 常用命令 附录1.1 管理用命令 函数名 ...运行Matlab演示程序 type 列.M文件 doc 装入超文本文档 version 显示Matlab的版本号 help 启动联机帮助 what 列当前目
  • Matlab函数参考

    千次阅读 2012-10-19 13:36:45
    分类总表 ...一、一般函数命令 ...三、程序语言设计 十三、三维图形 四、基本矩阵和矩阵操作 十四、特殊图形 五、基本数学函数 十五、图形句柄 六、特殊函数 十六、位函
  • matlab函数总结

    千次阅读 2018-07-28 10:38:58
    ndims(A)返回A的维数 size(A)返回A各个维的最大元素个数 length(A)返回max(size(A)) [m,n]=size(A)如果A是二维数组,返回行数和列数 nnz(A)返回A中非0元素的...MATLAB的取整函数:fix(x), floor(x) :,ceil(x) , ro...
  • Callback函数详解

    千次阅读 2019-04-19 23:00:23
    一,回调函数 ...使用回调函数实际上就是在调用某个函数(通常是API函数)时,将自己的一个函数(这个函数为回调函数)的地址作为参数传递给那个函数。 而那个函数在需要的时候,利用传递的地址调用回调函数...
  • 长时间用惯了Delphi,偶尔用一下C,总觉得直接使用文件函数和内存管理函数很不方便,于是便写了几个C语言流函数,考虑到有时要用到接口IStream,如我在《在C语言Windows应用程序中使用GDI+》介绍的C语言GDI+图像...
  • matlab函数大全

    千次阅读 2017-02-16 14:06:11
    MATLAB学习笔记——函数使用
  • 7.7.2 三维彩带 7.8 伪彩图 7.9 切片 7.9.1 切片 7.9.2 切片轮廓线图 7.10 网格和曲面特效 7.10.1 显示轮廓线 7.10.2 显示围裙 7.10.3 瀑布效果 7.10.4 带光照模式的阴影 7.11 ...
  • 数据可视化、数据分析是Python的主要应用场景之一,Python为数据展示提供了大量优秀的功能包,无论你想什么,在python中都能找到相对应的库,比较常用的有matplotlib、pygal、Pychart等。 (提示:本文所涉及到...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 72,607
精华内容 29,042
关键字:

如何根据函数画出程序流图