Bresenham直线算法GUI——matlab实现

话不多说,直接上代码
BresenhamLine.m

function BresenhamLine(x0,y0,x1,y1)
dx=x1-x0;
dy=x1-x0;
len=max(abs(x1-x0),abs(y1-y0));
d(1)=dx-2*dy;
up=2*dx-2*dy;
down=-2*dy;
x(1)=x0;
y(1)=y0;
for n=1:len
    x(n+1)=x(n)+1;
    if d(n) < 0
        y(n+1)=y(n)+1;
        d(n+1)=d(n)+up;
    else
        y(n+1)=y(n);
        d(n+1)=d(n)+down;
    end
end
for n=1:len
    plot(x,y);
end

BrsenhamLineGUI.m

clc;
clear; 
close all; 
ha = axes('Units', 'pixels', 'Position', [40, 40, 400, 400]); 
ptgrid = uicontrol('Style', 'pushbutton', ...
    'String', '网格', 'Position', [450, 150, 60, 30], 'Callback', 'grid'); 
btncla = uicontrol('Style', 'pushbutton', ...
    'String', '清除', 'Position', [450, 100, 60, 30], 'Callback', 'cla');
btnplot = uicontrol('Style', 'pushbutton', ...
    'String', '绘图', 'Position', [450, 200, 60, 30]);
x0 = uicontrol('Style', 'text', ...
    'String', 'x', 'Position', [450, 380, 20, 20]);
ex0=uicontrol('Style', 'edit', ...
   'Tag','ex0', 'String', '', 'Position', [450, 340, 25, 20]);
y0 = uicontrol('Style', 'text', ...
    'String', 'y', 'Position', [480, 380, 20, 20]);
ey0=uicontrol('Style', 'edit', ...
   'Tag','ey0', 'String', '', 'Position', [480, 340, 25, 20]);
x1 = uicontrol('Style', 'text', ...
    'String', 'x1', 'Position', [450, 300, 20, 20]);
ex1=uicontrol('Style', 'edit', ...
    'Tag','ex1','String', '', 'Position', [450, 260, 25, 20]);
y1 = uicontrol('Style', 'text', ...
    'String', 'y1', 'Position', [480, 300, 20, 20]);
ey1=uicontrol('Style', 'edit', ...
   'Tag','ey1', 'String', '', 'Position', [480, 260, 25, 20]);
label=uicontrol('Style','text','String','Bresenham直线生成算法GUI','Position',[190, 440, 100, 30]);
label=uicontrol('Style','text','String','制作人:带制作人','Position',[445,40, 100, 30]);
btnplot.Callback = @plot_sin;   
function plot_sin(source, callbackdata)
X0=findobj('Tag', 'ex0');
Y0=findobj('Tag', 'ey0');
X1=findobj('Tag', 'ex1');
Y1=findobj('Tag', 'ey1');
BresenhamLine(str2num(X0.String),str2num(Y0.String),str2num(X1.String),str2num(Y1.String));
end

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_41988893/article/details/105237769