我有一个Matlab程序,要求用户在场景中围绕人类绘制一个矩形(我后来使用 @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Only show items in the action bar relevant to this screen
// if the drawer is not showing. Otherwise, let the drawer
// decide what to show in the action bar.
getMenuInflater().inflate(R.menu.menu_main, menu);
//Associate searchable configuration with the SearchView
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.search));
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
//Returns null
//searchView.getLayoutParams();
return true;
}
提取该区域)。我需要强制用户绘制正方形。我正在使用<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item android:id="@+id/search"
android:title="Search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="collapseActionView|ifRoom"
app:actionViewClass="android.support.v7.widget.SearchView"/>
</menu>
函数,但我无法强制使用正方形,也无法找到有关如何执行此操作的文档。
答案 0 :(得分:4)
似乎imrect
可以将position-constraining function作为输入参数。该功能规定如下:
每当移动对象时,因为 鼠标拖动时,使用调用约束函数 语法:
constrained_position = fcn(new_position)
位置是[xleft ybottom width height]
形式的矢量。
所以试试这个:
axis equal %// same sccale on both axes
axis manual %// freeze axes size
h = imrect('PositionConstraintFcn', @(x) [x(1) x(2) min(x(3),x(4))*[1 1]])
答案 1 :(得分:4)
最简单的方法是在创建矩形期间将setFixedAspectRatioMode
方法设置为true
,最初绘制一个正方形。 (检查Gaussian Integers)。
示例:
%// Make sure it's initially a square!!
hRect = imrect(gca, [10 10 100 100]);
setFixedAspectRatioMode(hRect,1)
然后无论你如何改变位置,它都将保持正方形。但请注意,与Luis相反。解决方案,用户无法指定方块的初始位置。