低层绘图操作1

  • 5.5.1 图形对象及其句柄

1.图形对象

2.图形对象句柄

例:
x=linspace(0,28pi,30);
y=sin(x);
h0=plot(x,y,‘rx‘) %曲线对象的句柄
h1=gcf %图形窗口句柄
h2=gca %坐标轴句柄
h3=findobj(gca,‘Marker‘,‘x‘)

5.5.2图形对象属性

1.属性名与属性值

每种图形对象都具有各种各样的属性.

例:LineStyle是曲线对象的一个属性名,它的值决定着线型取值可以是‘-‘、‘:‘、‘-·‘、‘--‘、‘‘和‘none‘。

在属性名的写法中,不区分字母的大、小写,而且在不引起岐义前提 下,属性名不必写全。

例;lines就代表LineStyle。此外,属性名要用单撇号括起来。

2.属性的操作

创建一个对象时,必须给对象的各种属性赋予必要的属性值,否则,系统自动使用默认属性值。

用户可以通过set函数重新设置对象属性,也可通过get函数获取这些属性值

set调用格式:

set(句柄,属性名1,属性值1,属性名2,属性值2,...)
其中句柄用于指明要操作的对象。
如果在调用set函数时省略全部属性名和属性值,则将显示出句柄所有的允许属性。

例:绘制正弦曲线并保存曲线句柄,然后改变曲线属性
x=0:pi/10:2*pi;
h=plot(x,sin(x));
set(h,‘color‘,‘r‘,‘LineStyle‘,‘:‘,‘Marker‘,‘p‘);%颜色,线形和数据点的标记符号

  

get调用格式:

V=get(句柄,属性名)
其中V是返回的属性值。如果在调用get函数时,省略属性名,则将返回句柄所有的属性值。
用get 函数来获取上述曲线的属性一值。例如 :
 col=get(h,‘color‘);
将得到曲线的颜色属性值[1 0 0],即红色。
用get函数可获取屏幕的分辨率:v=get(0,‘ScreenSize‘)
>>col =

     1     0     0

>> v=get(0,‘ScreenSize‘)

v =

           1           1        1600         900
其中(1,1)为屏幕左下角坐标,(1600,900)为宽高
可以根据屏幕分辨率来设置容器大小

  3.对象的公共属性

图形对象具有各种各样的属性,有些属性一是所有对象共同具备的:

Children属性:该属性的取值是该 对象所有子对象的句柄组成的一个向量。

Parent属性:该属性的取值是该对象的父对象的句柄。显然图形窗口对象的Parent属性总是0

Tag属性:该属性的取值一个字符串,它相当于给该对象定义了一个标识符。
定义了Tag属性后,在任何程序中都可以通过findobj函数获取该标识符所对应图形对象的柄。
例如
:hf=findobj(0,‘Tag’,‘Flag1‘)将会在屏幕对象用户其子对象中寻找 Tag属性为Flag1的对象,并返回句柄。

UserData属性。该属性的取值是一个矩阵,默认值为空矩阵。
在程序设计中,可以将一个图形对象有关的比较重要的数据存储在这个属性中,借此可以达到传递数据的目的。
具体做法是,先用set函数给某一句柄添加一些附加数据(一个矩阵),如果想使用这样的矩阵,再用get函数调用出来。

Visible属性。该属性的取值是on(默认值)或off。决定着图形窗口是否在屏幕上显示出来。当它的值 为off时,可以用来隐藏该图形

ButtonDownFcn属性。该属性的取值是一个字符串,一般是某个M文件的文件名或一小段Matlab语句。图形对象确定了一个作用区域,当单击该区域时,Matlab自动执行的程序段。

CreateFcn属性。该属性的取值是一个字符串,一般是某个M文件的文件名或一小段Matlab语句。当创建该对象时,Matlab自动执行此程序段。

DeleteFcn属性。该属性的取值是一个字符串,一般是某个M文件的文件名或一小段Matlab语句。当取消该对象时,matlab自动执行该程序段。

  例:在同一坐标下画红、绿两条不同曲线,希望获得绿色曲线的句柄,并对其进行设置。

>>  x=0:pi/50:2*pi;
y=sin(x);
z=cos(x);
plot(x,y,‘r‘,x,z,‘g‘);
H=get(gca,‘Children‘);%获取两曲线句柄向量H
for k=1:length(H)
 if get(H(k),‘Color‘)==[0 1 0]%[0 1 0]代表绿色
 Hg=H(k);
end
end
pause%便于观察设置效果
set(Hg,‘LineStyle‘,‘:‘,‘Marker‘,‘p‘);%对绿色曲线进行设置

  

时间: 2024-10-08 17:40:57

低层绘图操作1的相关文章

Linux用户层直接操作GPIO

Linux用户层直接操作GPIO 在一个老手的指导下,应用层可以直接操作GPIO,具体指设置GPIO的输入输出以及输出电平高或者低.这个大大地提高了灵活性,官方的文档有GPIO Sysfs Interface for Userspace,GPIO Sysfs. 这里我记录一下使用过例子: # RK30_PIN0_PD4 # A0-7 -> 0-7 / B0-7 -> 8-15 / C0-7 -> 16-23 / D0-7 -> 24-31 echo 28 > /sys/cla

OpenCV笔记(五)——基本的绘图操作

用OpenCV的话,也要会一些绘图的操作.主要是画线.圆.矩形.椭圆. 绘图的话,首先要了解两种类型:Point和Scalar. Point就是点的类,我们用它来表示图像当中的点,比如Point pt; pt.x = 10; pt.y = 8;或者Point pt = Point(10, 8); Scalar实质上就是4维的向量,也就是C++当中的含有4个元素的vector.一般我们只用到三维,比如Scalar(0, 0, 255); 一.线 void line(Mat& img, Point

三层之D层数据库操作

前提: 三层中我们已经知道D层主要的作用是针对数据库,进行基本的操作(数据连接和增删该查功能) 1.基本的sql语句 查:SELECT 字段名列表 FROM 数据表名  where"条件" 增 INSERT INTO 表名(字段名1,字段名2..)VALUES("表达式1","表达式2") 该 UPDATE 表名 SET 字段名1 ="表达式1",字段名2 ="表达式2".... WHERE 字段名n =&

封装CoreGraphics的API简化绘图操作

效果 说明 1. 将CoreGraphics的API接口抽象为对象,让绘图变得简单易懂 2. 简化常用的绘制操作 3. 源码长期更新 源码 https://github.com/YouXianMing/CGContextObject // // CGContextObject.h // DrawRect // // Created by YouXianMing on 15/7/2. // Copyright (c) 2015年 YouXianMing. All rights reserved.

CI的model层的操作

1.需求 整理ci框架下model层的相关操作 2.代码 model的代码,放在application/model目录下,文件名为Coupon.php <?php class Coupon extends CI_Model { function __construct() { parent::__construct(); $this->load->database(); } /* * @param array 一条记录数组 * @return bool 成功返回true * */ pub

关于层的操作

很少用到max里的 层 ,虽然对大场景的管理很有帮助,但可能是我没做过什么大场景吧哈哈~ 有时因为图层问题导致自动渲染程序渲染不出物体... 我的办法就是快刀斩乱麻,所有物体合并到同一层,然后删除其他空层,并将图层设置成可渲染. fn clear_layer = ( all_obj = #() layer_names = #() for i = 0 to layerManager.count-1 do ( ilayer = layerManager.getLayer i ilayer.nodes

JAVA实现DAO基本层CRUD操作

随着shh2各种操作方便框架.越来越多JAVA WEB效率,可是,假设在不了解这些框架使用的场合的情况下,一拿到项目就盲目地选择这些框架进行系统架构的搭建,就有可能造成非常多不是必需的资源浪费. 在项目开发中.对数据库的CRUD操作我们一般都是无法避免的操作,尽管hibernate封装的非常完美,可是.因为本人对这个框架的底层原理不是非常了解,每次使用的时候心里总认为没底.代码一旦出现异常,非常多时候都没法高速有效地解决.因此,为了让代码异常处理风险控制在自己的可控范围内,还是决定先将数据的CR

Django之模型层&amp;ORM操作

一. 单表查询:  1.在模型层创建模型表: from django.db import models # Create your models here. # 单表查询表 class User(models.Model): name = models.CharField(max_length=32) age = models.IntegerField() register_time = models.DateField()      2.连接MySQL,创建表 (具体操作见https://ww

9_Jvn框架之实现ORM持久层save操作(第九讲)

本次博客讲的内容: 场景:以前使用JDBC的时候对于jbdc相信很多人都做了不同的封装,因为纯JDBC的操作还是相对来说比较繁琐的.所以今天我们也来封装一下JBDC 把它集成到我们的Jvn框架里面. 解决思路: 不清楚可以直接看下面的代码. 1,操作数据库前引入连接池概念 druid.连接池的好处,相信大家都懂啦. 2,引入ThreadLocal.泛型指定Connection,用来存放链接.该类可以保证你在一个线程里面获取得到的是同一个Connection. 3,创建JDBC类 存放 drive