2016-12-09 5 views
1

Ich schrieb ein kleines Skript, um mich daran zu gewöhnen, in MATLAB zu warten, und ich wollte die Randfarbe der Warteleiste auf grün und die Gesichtsfarbe auf blau setzen, aber es funktioniert einfach nicht; Ich bekomme immer die Gesichtsfarbe in Grün und die Kante in Schwarz. Hier ist der Code:Matlab GUI waitbar

wb=waitbar(0,'Iterating...'); 
set(wb,'Name','Changing color'); 
wbobject=findobj(wb,'Type','Patch'); 
set(wbobject,'EdgeColor',[0 1 0],'FaceColor',[0 0 1]); 
for i=1:1000 
    waitbar(i/1000) 
end 
delete(wb); 

Eine weitere Frage: Würden Sie bitte erklären oder zu einer Quelle, um unter Bezugnahme mich zu verstehen, was ein Patch in MATLAB ist?

Vielen Dank!

+0

Haben Sie versucht 'set (wb, 'Edgecolor', ...)'? Verwenden Sie einfach den Namen des Objekts? – marcoresk

+0

marcoreskt: Ja, ich tat, aber es hat nicht funktioniert – chsafouane

Antwort

1

Sie können die Änderung in EdgeColor nicht sehen, da die waitbar-Abbildung ein line Objekt enthält, das diese Gliederung darstellt. Sie wollen, dass das Linienobjekt zu finden und die Color Eigenschaft ändern

wb=waitbar(0,'Iterating...'); 
set(wb,'Name','Changing color'); 
wbobject=findobj(wb,'Type','Patch'); 
set(wbobject,'EdgeColor',[0 1 0],'FaceColor',[0 0 1]); 

hline = findall(wb, 'type', 'line'); 
set(hline, 'Color', [0 1 0]); 

enter image description here

Auch ein patch Objekt in den documentation beschrieben. Es ist im Wesentlichen ein gefülltes Polygon. waitbar verwendet eins, um das Rechteck darzustellen, das den Fortschritt anzeigt.

+0

Suever Danke – chsafouane