matlab鼠标拖动物体,Matlab 鼠标拖动字对象

10.7.9 鼠标拖动字对象

【例 10.7.9 -1 】本程序有两个功能:把当前图形窗中已存在的任何字对象拖放到

所需的位置;向当前图形窗输入字对象,并拖放到任何所需位置。

(1)编写以下程 序

[textzz y.m]

fun ction textzzy(arg)

% textzzy.m 向当前图形窗输 入“字对象”,并用鼠标移放到需要的地方

% arg 任何合法的“字符串”,或 “字符串元胞数组”,或数值

% 调用格式 textzzy(S_C) 输入串、 串元胞 S_C ,并可用鼠标拖动

% 调用格式 textzzy 可移动当前图 形窗中已有的任何字对象

if ~nargin;

arg=0;

end

if ischar(ar g)|iscell(arg) % 以下指令向图形窗输入串或串 元胞

PT.Un its= 'normalized' ;

PT.Position=[0.01 0.01];

% 字符串进入图形窗的初始位置

PT.String=arg;

PT.Horiz ontalAlignment= 'left' ;

% 字符串 的水平定位方式

PT.VerticalAlignment= 'baselin e' ;

% 字符串的垂直定位方式

ht=text(PT);

% 采用构架设 置字对象属性,创建对象。

textzzy(0) % 递归调用 textzzy .m

elsei f arg==0 % 为鼠标操作准备条件

hf=get(0, 'Curren tFigure' );

% 获取当前图形窗的句柄

if isempty(hf )

error( ' 图形窗不存在。 ' )

end

< br>PF1.BackingStore= 'off' ;

% 为加快拖动速度,释放屏幕象素缓冲器。

PF1.WindowButtonDo wnFcn= 'textzzy(1)' ;

% 等待鼠标按下 左键,递归运行 textzzy(1)

set(hf,PF1) % 采用构架设 置图对象属性

f igure(hf) % 把当前图形窗调到前台

elseif arg==1 & amp;

strcmp(get(gco, 'Type' ), 'text' ) % 选定字对象

PO1.Units= 'data' ;

% 在此设置下,字对象框的左下顶点确定位置

PO1.EraseMode= ' xor' ;

% 设置旧对象的擦除模式

PO1.HorizontalAlig nment= 'left' ;

PO1.VerticalAli gnment= 'baseline' ;

set(gco,PO1) % 采用 构架设置选定对象的属性

PF2.Pointer= 'fleur' ;

% 设 置移动光标的形状

PF2.WindowButtonMotionFcn= 't extzzy(2)' ;

% 移动鼠标时,递归运行 text zzy(2)

P F2.WindowButtonUpFcn= 'textzzy (999)' ;

% 松开鼠标,递归运行 textzzy(9 99)

set( gcf,PF2) % 采用构架对图形窗属性再设置

elseif arg==2 % 拖动字对象

curpoi=get(gca, 'CurrentPoint ' );

% 获得鼠标所在新位置的坐标

set(gco, 'Position ' ,curpoi(1,1:3)) % 使所选对象定位在新坐 标处

elsei f arg==999 % 松开鼠标便属性重置为原缺省状态 <

br>

set(gco, 'EraseMode' , 'normal' )

PF3.WindowBut tonDownFcn= '' ;

% 恢复设置为缺省值,即空 串

PF3.Wi ndowButtonMotionFcn= '' ;

PF3.WindowBu ttonUpFcn= '' ;

PF3.Pointer= 'arrow' ;

% 光标恢复成箭头

< br>PF3.Units= 'pixels' ;

PF3.BackingSt ore= 'on' ;

% 重新起用象素缓冲器

set(gcf,PF3) % 把图形窗设置为缺省状态

else % 假如鼠标选择的不是“字对象”,恢复缺 省设置

PF4. WindowButtonDownFcn= '' ;

PF4.WindowBu ttonMotionFcn= '' ;

PF4.WindowButtonUp Fcn= '' ;

PF4.Pointer= 'arrow' ;

PF4.Units= 'p ixels' ;

PF4.BackingStore= 'on' ;

set(gcf,PF4)

end

< br>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值