1.仿真效果预览
matlab2022a仿真结果如下:
2.MATLAB核心程序
function figure1_WindowButtonMotionFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global flg mark rgb x0 y0 x y rect graph h;
if flg
switch(graph)
case '点线'
currPt=get(gca, 'CurrentPoint');
x=currPt(1,1);
y=currPt(1,2);
line(x,y, 'marker', mark,'color',rgb);
case '线形'
x0=x;y0=y;
currPt=get(gca, 'CurrentPoint');
x=currPt(1,1);
y=currPt(1,2);
line([x0 x], [y0,y],'LineStyle',mark,'color',rgb);
case '矩形'
currPt=get(gca, 'CurrentPoint');
x=currPt(1,1);
y=currPt(1,2);
if x~=x0
if ~isempty(h)
set(h,'Visible','off')
end
rect=[min([x0,x]),min([y0,y]),abs(x-x0),abs(y-y0)];
if rect(3)*rect(4)~=0
h=rectangle('Position',rect,'LineStyle',':');
end
end
case '椭圆'
currPt=get(gca, 'CurrentPoint');
x=currPt(1,1);
y=currPt(1,2);
if x~=x0
if ~isempty(h)
set(h,'Visible','off')
end
rect=[min([x0,x]),min([y0,y]),abs(x-x0),abs(y-y0)];
if rect(3)*rect(4)~=0
h=rectangle('Position',rect,'Curvature',[1,1],'LineStyle',':');
end
end
end
set(handles.edit1,'string',num2str(x));
set(handles.edit2,'string',num2str(y));
set(handles.text3,'string','Mouse is moving!');
end
function figure1_WindowButtonUpFcn(hObject, eventdata, handles)
% hObject handle to figure1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
global flg rgb mark h graph rect;
flg=0;
switch(graph)
case '矩形'
set(h,'Visible','off');h=[];
if rect(3)*rect(4)~=0
rectangle('Position',rect,'edgecolor',rgb,'LineStyle',mark)
end
case '椭圆'
set(h,'Visible','off');h=[];
if rect(3)*rect(4)~=0
rectangle('Position',rect,'Curvature',[1,1],'edgecolor',rgb,'LineStyle',mark)
end
end
set(handles.text3,'string','Mouse up!');
function edit1_Callback(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles structure with handles and user data (see GUIDATA)
% Hints: get(hObject,'String') returns contents of edit1 as text
% str2double(get(hObject,'String')) returns contents of edit1 as a double
% --- Executes during object creation, after setting all properties.
function edit1_CreateFcn(hObject, eventdata, handles)
% hObject handle to edit1 (see GCBO)
% eventdata reserved - to be defined in a future version of MATLAB
% handles empty - handles not created until after all CreateFcns called
% Hint: edit controls usually have a white background on Windows.
% See ISPC and COMPUTER.
if ispc && isequal(get(hObject,'BackgroundColor'), get(0,'defaultUicontrolBackgroundColor'))
set(hObject,'BackgroundColor','white');
end