我怎么得到滑块改变背景颜色/ GUI的RGB值轴?

50个视图(30天)
我写代码来创建一个GUI。
列出的指导方针是:
首先,打开在Matlab应用程序设计师。
然后创建一个新的GUI中 “设计视图”选项卡 把所有的GUI组件
  • 三个滑块
  • 1轴
  • 1”按钮
  • 1)标签
  • 为按钮添加一个回调函数
接下来,去 “代码视图”选项卡 ,并添加按钮的代码 回调函数 轴的背景颜色 根据滑块的值和变化 输出滑块的值。 这个回调函数将在执行 更新颜色按钮 是推动。
  • 滑块可以保存的值作为变量存储”。值”属性
  • 轴的颜色可以改变通过设置”。颜色的RGB值”属性滑块
  • 使用sprintf函数来打印的值R, G, B标签组件通过设置。text属性。sprintf函数非常类似于流——而是印刷命令窗口,sprintf打印一个字符数组变量。
我目前在按钮回调编码,但是我觉得我可能需要做一些与滑块回调。我不确定那是什么以及如何去做它。当我运行GUI和移动滑块,滑块不改变背景颜色的轴。它仍然是白色的,不管我做什么。滑块的值有时出现在标签和其他时间他们不。
我跟着这些准则和设计视图:
我的代码:
classdefcolorBox < matlab.apps.AppBase
%属性对应于应用程序组件
属性(访问=公共)
UIFigurematlab.ui.Figure
标签matlab.ui.control.Label
UpdateColorButtonmatlab.ui.control.Button
BSlidermatlab.ui.control.Slider
BSliderLabelmatlab.ui.control.Label
GSlidermatlab.ui.control.Slider
GSliderLabelmatlab.ui.control.Label
RSlidermatlab.ui.control.Slider
RSliderLabelmatlab.ui.control.Label
UIAxesmatlab.ui.control.UIAxes
结束
%事件回调处理组件
方法(访问=私人)
%按钮功能:UIFigure
函数UIFigureButtonDown(应用程序、事件)
%的背景颜色轴变化基于价值
%滑块
%值滑动条的打印出来
RVal = app.RSlider.Value;
GVal = app.RSlider.Value;
BVal = app.BSlider.Value;
app.UIAxes。写成BackgroundColor = [RVal、GVal BVal];
app.Label。文本=sprintf(“[%。2f %.2f %.2f]',GVal RVal BVal);
结束
结束
%初始化组件
方法(访问=私人)
%创建UIFigure和组件
函数createcomponent(应用)
%创建创建UIFigure和隐藏,直到所有组件
app.UIFigure = uifigure (“可见”,“关闭”);
app.UIFigure。位置= (100 100 640 480);
app.UIFigure。Name =MATLAB应用程序的;
app.UIFigure。ButtonDownFcn = createCallbackFcn(应用,@UIFigureButtonDown,真实);
%创建UIAxes
app.UIAxes = uiaxes (app.UIFigure);
标题(app.UIAxes,“自定义颜色”)
app.UIAxes。XTick = [];
app.UIAxes。XTickLabel =;
app.UIAxes。YTick = [];
app.UIAxes。YTickLabel =;
app.UIAxes。位置= (283 153 300 255);
%创建RSliderLabel
app.RSliderLabel = uilabel (app.UIFigure);
app.RSliderLabel。HorizontalAlignment =“对”;
app.RSliderLabel。位置= [42 337 25 22];
app.RSliderLabel。文本=“R”;
%创建RSlider
app.RSlider = uislider (app.UIFigure);
app.RSlider。限制= [0 1];
app.RSlider。MajorTicks = [0 0.5 - 1];
app.RSlider。位置= (88 346 150 3);
%创建GSliderLabel
app.GSliderLabel = uilabel (app.UIFigure);
app.GSliderLabel。HorizontalAlignment =“对”;
app.GSliderLabel。位置= [42 271 25 22];
app.GSliderLabel。文本=‘G’;
%创建GSlider
app.GSlider = uislider (app.UIFigure);
app.GSlider。限制= [0 1];
app.GSlider。MajorTicks = [0 0.5 - 1];
app.GSlider。位置= (88 280 150 3);
%创建BSliderLabel
app.BSliderLabel = uilabel (app.UIFigure);
app.BSliderLabel。HorizontalAlignment =“对”;
app.BSliderLabel。位置= [42 198 25 22];
app.BSliderLabel。文本=“B”;
%创建BSlider
app.BSlider = uislider (app.UIFigure);
app.BSlider。限制= [0 1];
app.BSlider。MajorTicks = [0 0.5 - 1];
app.BSlider。位置= (88 207 150 3);
%创建UpdateColorButton
app.UpdateColorButton = uibutton (app.UIFigure,“推”);
app.UpdateColorButton。位置= (383 110 100 23);
app.UpdateColorButton。文本=“更新颜色”;
%创建标签
app.Label = uilabel (app.UIFigure);
app.Label。写成BackgroundColor = (1 1 1);
app.Label。HorizontalAlignment =“中心”;
app.Label。位置= (111 110 104 22);
app.Label。文本=;
%显示所有组件创建后的图
app.UIFigure。可见=“上”;
结束
结束
%的应用程序创建和删除
方法(访问=公共)
%构建应用程序
函数应用= colorBox
%创建UIFigure和组件
createcomponent(应用)
%注册应用程序与应用程序设计师
app.UIFigure registerApp(应用)
如果nargout = = 0
清晰的应用程序
结束
结束
%执行的代码在应用程序删除
函数删除(应用)
%删除UIFigure当应用程序被删除
删除(app.UIFigure)
结束
结束
结束

接受的答案

沃斯
沃斯 2022年11月18日
编辑:沃斯 2022年11月18日
“我觉得我可能需要做一些与滑块回调。我不确定那是什么以及如何去做。”
根据任务,滑块没有回调;轴的颜色应该改变只有当按钮被推,所以只有按钮需要一个回调。(然而,如果我是设计这个项目,我将完全的按钮,有轴的颜色改变滑块移动时,按照你的建议,但这不是任务。)
现在,有一些相对较小的问题,防止这正常工作:
  • 你设置功能”UIFigureButtonDown“的ButtonDownFcn uifigure,而不是uibutton的回调。要修正这个问题,在设计视图中,删除UIFigureButtonDown的ButtonDownFcn uifigure,然后单击app.UpdateColorButton在浏览器组件uibutton的属性和设置UIFigureButtonDown作为回调。
  • 轴属性来设置“颜色”,不是“写成BackgroundColor”。
  • 有一个错误,你有“GVal = app.RSlider.Value;”,应该是“GVal = app.GSlider.Value;”。
试一试这三个变化,看看会发生什么。
2的评论

登录置评。

答案(1)

Zahrah瓦利德
Zahrah瓦利德 2022年11月18日
编辑:Zahrah瓦利德 2022年11月18日
你应该添加“SliderchangingValue”回调函数的三个滑块和添加他们的“changingValue”应用程序属性与私人访问。
对于这个示例,我改名为滑块:红色、绿色和蓝色分别;命名为“changingValue”:红色,绿色,和蓝色分别,并将它们添加到应用程序的属性如下:
”“行注释的箭 “% < < <” 是唯一的行你需要填补,其余将自动生成当添加属性,等回调。”
属性(访问=私人)
红色;% < < <
绿色的;% < < <
蓝色;% < < <
结束
我没有使用这个按钮在“startupFcn”中添加一个初始化函数(你可以将其添加回调选项卡“代码浏览器”窗口的“代码视图”窗口(左上角)。我已经初始化UIAxes的背景颜色为白色。
函数startupFcn(应用)
app.red = 1;% < < <
app.green = 1;% < < <
app.blue = 1;% < < <
结束
我一直滑块的限制为默认(0:100)和UIAxes颜色属性定义从0到1,我只是把滑块的值到100年保持在可接受的范围内。
%值改变功能:RedSlider
函数RedSliderValueChanging(应用程序、事件)
app.red = event.Value;% < < <
app.UIAxes.Color =[应用程序。红色app.green app.blue] / 100;% < < <
结束
%值改变功能:BlueSlider
函数BlueSliderValueChanging(应用程序、事件)
app.blue = event.Value;% < < <
app.UIAxes.Color =[应用程序。红色app.green app.blue] / 100;% < < <
结束
%值改变功能:GreenSlider
函数GreenSliderValueChanging(应用程序、事件)
app.green = event.Value;% < < <
app.UIAxes.Color =[应用程序。红色app.green app.blue] / 100;% < < <
结束
我希望这有助于你:)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!