96编辑器旗下产品
找图
终身
ID:0
到期时间:永久
退出登录
您的位置:首页 > 百科管理 > 详情

怎么用ondraw画图-vc中如何使用ondraw画曲线

原创:找图网 2023-04-20 10:55:35
  • android图像绘制――画布保存为图片

  • 解释:

    1、首先创建一个Bitmap图片,并指定大小;

    2、在该图片上创建一个新的画布Canvas,然后在画布上绘制,并保存即可;

    3、需要保存的目录File,注意如果写的目录如“/sdcard/akai/”如果不存在的话,要先创建(()),否则FileOutputStream会报错No found;

    4、需要添加权限:<uses-permission android:name="_EXTERNAL_STORAGE"/>

    什么是画布呢 其实通过字面意思的理解就是用来绘画的地方,那么android里的画布是神马样子的呢?

    在自定义画布中常用到下面3个类

    Canvas

    这些绘图方法中的每一个都需要指定一个Paint对象来渲染它

    Paint

    Paint也称为"刷子",Paint可以指定如何将基本图形绘制到位图上。

    Paint类相当于一个笔刷和调色板。它可以选择如何使用上面描述的draw方法来渲染绘 制在画布上的基本图形。通过修改Paint对象,可以在绘图的时候控制颜色、样式、字体和特殊效果。最简单地,setColor可以让你选择一个Paint的颜色,而Paint对象的样式(使用setStyle控制)则可以决定是绘制绘图对象的轮廓(STROKE),还是只填充每一部 分(FILL),或者是两者都做(STROKE_AND_FILL)除了这些简单的控制之外,Paint类还支持透明度,另外,它也可以通过使用各种各样的阴影、过滤器和效果进行修改,从而提供由更丰富的、复杂的画笔和颜料组成的调色板。

    从继承View类(或其子类)开始,并定义onDraw()回调方法。系统会调用该方法来完 成View对象自己的绘制请求。这也是通过Canvas对象来执行所有的图形绘制调用的地方,这个Canvas对象是由onDraw()回调方法传入的。

    Android框架只在必要的时候才会调用onDraw()方法,每次请求应用程序准备完成图形 绘制任务时,必须通过调用invalidate()方法让该View对象失效。这表明可以在该View 对象上进行图形绘制处理了,然后Android系统会调用该View对象的onDraw()方(尽 管不保证该回调方法会立即被调用)。

    在定制的View组件的onDraw()方法内部,使用给定的Canvas对象来完成所有的图形绘制处理(如…()方法或把该Canvas对象作为参数传递给其他类的draw() 方法)。一旦onDraw()方法被执行完成,Android框架就会使用这个Canvas对象来绘制一个有系统处理的Bitmap对象。

    下面是Paint一些常用方法:

    Bitmap

    Bitmap绘图的表面也称位图(这里详细说哈位图的功能)。

    从资源中获取位图:

    通过Resource的函数:InputStream openRawResource(int id)获取得到资源文件的数据流后,可以通过2种方式获得bitmap

    使用BitmapDrawable :

    使用BitmapDrawable(InputStream is)构造一个BitmapDrawable;

    使用BitmapDrawable类的getBitmap()获取得到位图;

    使用BitmapFactory使用BitmapFactory类decodeStream(InputStream is)解码位 图资源,获取位图BitmapFactory的所有函数都是static,这个辅助类可以通过资 源ID、路径、文件、数据流等方式来获取位图。

    获取位图的信息

    一般获取位图信息包括:位图大小、透明度、颜色格式等等,这些信息呢可以通过 三-一方法获取得到Bitmap就迎刃而解了,Android SDK中对Bitmap有详细说明,大家可以去详细了解哈。

    显示位图

    显示位图需要使用核心类Canvas,可以直接通过Canvas类的drawBirmap()显示位图,或者借助于BitmapDrawable来将Bitmap绘制到Canvas,下面的实例中会详细列举到

    位图的缩放

    位图的缩放,在Android SDK中提供了2种方法:

    1:将一个位图按照需求重画一遍,画后的位图就是我们需要的了,与位图的显示几乎 一样:

    drawBitmap(Bitmap bitmap, Rect src, Rectdst, Paint paint)

    2:在原有位图的基础上,缩放原位图,创建一个新的位图:

    createBitmap(Bitmap source, int x, int y,int width, int height, Matrix m, boolean filter)

    位图旋转

    位图的旋转,离不开Matrix。Android SDK提供了Matrix类,可以通过各种接口来设置 矩阵

    android 处理图片工具

    截取视频帧并转化为Bitmap

  • vc中如何使用ondraw画曲线

  • 是在Ondraw中画,有以下几个函数(可能还有我不知道的):

    BOOL Arc(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);

    BOOL Arc(LPCRECT lpRect, POINT ptStart, POINT ptEnd);

    BOOL Arc TO(int x1, int y1, int x2, int y2, int x3, int y3, int x4, int y4);

    BOOL Arc To(LPCRECT lpRect, POINT ptStart, POINT ptEnd);

    BOOL Pie(int x1 ,int y1 ,int x2,int y2,int x3 ,int y3 ,int x4 ,int y4);

    BOOL Pie(LPRECT lpRect,POINT ptStart ,POINT ptEnd);

    或者说,你设定一个点为原点,然后像我们数学里的一样,用类似下面的语句

    for(int i=0;i<=1000;i++)

    {

    double pi=3.141592654;

    double x=(i*pi)/180.00;

    double y=sin(x);

    int j=5000-(int)(1000*y);

    pDC->LineTo(i,j);

    }

    就是透过X的值计算y的值然后用LineTo画出来,当然必要的话你要设定相应的映像模式

  • MFC中ONPAINT、ONDRAW、ONERASEBKGND等绘图函数的使用场合和作用、区别是什么啊?

  • OnPaint是WM_PAINT消息的消息处理函数,在OnPaint中调用OnDraw,一般来说,用户自己的绘图代码应放在OnDraw中。OnPaint()是CWnd的类成员,负责响应WM_PAINT消息。OnDraw()是CVIEW的成员函数,没有响应消息的功能.当视图变得无效时(包括大小的改变,移动,被遮盖等等),Windows发送WM_PAINT消息。该视图的OnPaint 处理函数通过创建CPaintDC类的DC对象来响应该消息并调用视图的OnDraw成员函数.OnPaint最后也要调用OnDraw,因此一般在OnDraw函数中进行绘制。

    ONERASEBKGND实现双缓冲绘图,擦除背景的。

    最新文章 更多
    最新素材 更多
    公司介绍 网站地图 图片资讯
    Copyright © 2010-2022 山东找图网络科技有限公司  鲁ICP备18007836号-3  邮箱:15653358549@163.com