创建图形块

绘图时,常见的一种情况是,一个部件由几个或几十个基本的图形单元组成。处理时,一般将这些图形单元作为一个图形块一起进行处理,例如,一起平移、旋转,一起被选取。[大谦MATLAB,dqmatlab点com]

在MATLAB中创建图形块很简单,创建一个图形块就是创建一个hggroup对象,然后把组成图形块的各个图形单元作为该hggroup对象的子对象。

利用hggroup函数创建hggroup对象,该函数的调用格式为:

code.matlab
h=hggroup
h=hggroup(...,'PropertyName',propertyvalue)

hggroup对象是任何坐标系子对象和其他hggroup对象的父对象。可以用hggroup对象组成一组对象,这组对象在下面几种情况下可以作为单一对象进行处理:

可见性—设置hggroup对象的Visible属性会同时将每个子对象的Visible属性设置为相同值。

可选性—将每个hggroup子对象的HitTest属性值设置为off,使得单击任何子对象时可以选择所有子对象。

当前对象—将每个hggroup子对象的HitTest属性值设置为off,使得选中任何子对象时该hggroup对象成为当前对象。

下面的函数创建一个圆角矩形和一个圆,其父对象是同一个hggroup对象。即用该圆角矩形和圆组成一个图形块进行处理。对该图形块进行平移和缩小变换。

code.matlab
>> hg=hggroup;
>> rec=rectangle('Position',[3,7,20,8], 'Curvature',[.3 .4], 'FaceColor', 'g', 'Parent',hg);
>> cir=rectangle('Position',[8,15,10,10], 'Curvature',[1 1], 'LineWidth',3, 'FaceColor', 'r', 'Parent',hg);
>> axis([0 25 0 25]);
>> axis equal

生成图6-1。

下面对圆和圆角矩形进行平移和缩小变换,因为上面已经将它们绑定到组对象hg中,直接针对该组对象进行操作即可。

code.matlab
>> t=hgtransform;
>> set(hg, 'Parent',t)
>> Tz=makehgtform('translate',1,2,0);
>> Sxy=makehgtform('scale',0.5);
>> set(t, 'matrix', Sxy*Tz)

生成图6-2。

Document Image Document Image
\[\]

图6-1 生成图形并组合成图形块 图6-2 平移和缩小图形块