使用matlab实现类似windows系统中的画图小软件,带GUI界面

167 阅读2分钟

1.仿真效果预览

matlab2022a仿真结果如下:

 

1.png  

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`