使用matlab实现类似windows系统中的画图小软件,带GUI界面
1.仿真效果预览
matlab2022a仿真结果如下:
2.MATLAB核心程序
% --- Executes on mouse motion over figure - except title and menu. 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