Matlab GUI编程技巧(十):ui figure函数创建可视化图窗
- 🔗?運(yùn)行環(huán)境:Matlab
- 🚩?撰寫作者:左手の明天
- 🥇?精選專欄:《python》
- 🔥??推薦專欄:《算法研究》
💗 大家好🤗🤗🤗,我是左手の明天!💗
📆? 最近更新:2022 年 5 月 26 日,左手の明天的第?247?篇原創(chuàng)博客
📚?更新于專欄:Matlab GUI編程技巧
目錄
🚩UI Figure 屬性?
??窗口外觀
💗Color?-?背景色
💗WindowStyle?-?窗口樣式
💗WindowState?-?窗口狀態(tài)
??位置和大小
💗Units?-?測量單位
💗Resize?-?可調(diào)整大小
??繪圖
💗Colormap?-?UIAxes?內(nèi)容的顏色圖
💗Alphamap?-?坐標(biāo)區(qū)內(nèi)容的透明度映射
??鼠標(biāo)指針
💗Pointer?-?指針符號(hào)
??標(biāo)識(shí)符
💗Icon?-?圖標(biāo)源或文件
💗NumberTitle?-?使用帶編號(hào)的標(biāo)題
🚩創(chuàng)建可視化圖窗
??語法
??示例
💗創(chuàng)建默認(rèn)的 UI 圖窗
💗設(shè)置和訪問屬性
💗更改圖窗大小
💗創(chuàng)建模態(tài) UI 圖窗
💗編寫 CloseRequestFcn 以確認(rèn)關(guān)閉 UI 圖窗
UI 圖窗是在 App 設(shè)計(jì)工具中或通過?uifigure?函數(shù)以編程方式創(chuàng)建 App 的容器。可以通過屬性控制 UI 圖窗的外觀和行為。使用圓點(diǎn)表示法引用特定的對象和屬性:
fig = uifigure; fig.Name = 'My App';🚩UI Figure 屬性?
??窗口外觀
💗Color?-?背景色
背景顏色,指定為 RGB 三元組、十六進(jìn)制顏色代碼。
對于自定義顏色,請指定 RGB 三元組或十六進(jìn)制顏色代碼。
-
RGB 三元組是包含三個(gè)元素的行向量,其元素分別指定顏色中紅、綠、藍(lán)分量的強(qiáng)度。強(qiáng)度值必須位于?[0,1]?范圍內(nèi),例如?[0.4 0.6 0.7]。
-
十六進(jìn)制顏色代碼是字符向量或字符串標(biāo)量,以井號(hào) (#) 開頭,后跟三個(gè)或六個(gè)十六進(jìn)制數(shù)字,范圍可以是?0?到?F。這些值不區(qū)分大小寫。因此,顏色代碼?'#FF8800'?與?'#ff8800'、'#F80'?與?'#f80'?是等效的。
此外,還可以按名稱指定一些常見的顏色。下表列出了命名顏色選項(xiàng)、等效 RGB 三元組和十六進(jìn)制顏色代碼。
| 'red' | 'r' | [1 0 0] | '#FF0000' |
| 'green' | 'g' | [0 1 0] | '#00FF00' |
| 'blue' | 'b' | [0 0 1] | '#0000FF' |
| 'cyan' | 'c' | [0 1 1] | '#00FFFF' |
| 'magenta' | 'm' | [1 0 1] | '#FF00FF' |
| 'yellow' | 'y' | [1 1 0] | '#FFFF00' |
| 'black' | 'k' | [0 0 0] | '#000000' |
| 'white' | 'w' | [1 1 1] | '#FFFFFF' |
💗WindowStyle?-?窗口樣式
窗口樣式,指定為下列值之一:
-
'normal'?- 此圖窗窗口獨(dú)立于其他窗口,并且在顯示圖窗時(shí)可以訪問其他窗口。
-
'modal'?- 該圖窗以正常窗口樣式顯示在所有現(xiàn)有圖窗窗口的上方,并使這些窗口變得無法訪問(只要頂層圖窗存在并保持模態(tài))。但是,任何在模態(tài)圖窗之后創(chuàng)建的新圖窗都會(huì)顯示出來。
-
'alwaysontop'?- 圖窗顯示在所有其他窗口的頂部,包括模態(tài)圖窗窗口和來自非 MATLAB 應(yīng)用程序的窗口。其他窗口仍可訪問。
UI 圖窗模態(tài)窗口樣式行為
當(dāng)?WindowStyle?設(shè)置為?'modal'?時(shí),UI 圖窗窗口會(huì)阻止在它之前創(chuàng)建的 UI 圖窗窗口中的鍵盤和鼠標(biāo)交互,并將其?Visible?屬性設(shè)置為?'on'。例如,在下面的代碼中,圖窗 3 相對于圖窗 2 為模態(tài)圖窗,圖窗 2 相對于圖窗 1 為模態(tài)圖窗。
fig1 = uifigure('Name','Figure 1'); fig1.WindowStyle = 'modal';fig2 = uifigure('Name','Figure 2'); fig2.WindowStyle = 'modal';fig3 = uifigure('Name','Figure 3'); fig3.WindowStyle = 'modal';💗WindowState?-?窗口狀態(tài)
窗口狀態(tài),指定為下列值之一:
-
'normal'?- 窗口顯示為正常狀態(tài)。
-
'minimized'?- 窗口被折疊,但您仍可以執(zhí)行命令來獲取或設(shè)置其屬性、添加子級(jí)或在窗口中創(chuàng)建繪圖。
-
'maximized'?- 窗口填滿屏幕。操作系統(tǒng)提供的最小化、還原和關(guān)閉按鈕出現(xiàn)在窗口的角落。如果正常狀態(tài)下的窗口包含菜單,則它們在此狀態(tài)下也會(huì)顯示。
-
'fullscreen'?- 窗口填滿屏幕。但是,操作系統(tǒng)提供的最小化、還原和關(guān)閉按鈕將被隱藏。如果正常狀態(tài)下的窗口包含菜單,則它們在此狀態(tài)下也會(huì)顯示。
??位置和大小
💗Position?-?UI 圖窗的位置和大小,不包括邊框和標(biāo)題欄
UI 圖窗的位置和大小,不包括邊框和標(biāo)題欄,指定為?[left bottom width height]?形式的四元素向量。
| left | 從主畫面左邊緣到 UI 圖窗窗口的內(nèi)部左邊緣的距離。在具有多個(gè)監(jiān)視器的系統(tǒng)上,該值可能為負(fù)數(shù)。 |
| bottom | 從主畫面下邊緣到 UI 圖窗窗口的內(nèi)部下邊緣的距離。在具有多個(gè)監(jiān)視器的系統(tǒng)上,該值可能為負(fù)數(shù)。 |
| width | UI 圖窗的左右內(nèi)部邊緣之間的距離。 |
| height | UI 圖窗的上下內(nèi)部邊緣之間的距離。 |
💗Units?-?測量單位
測量單位,指定為下表中的值之一。
| 'pixels'(默認(rèn)值) | 像素。 以像素為單位的距離不依賴 Windows 和?Macintosh?系統(tǒng)上的系統(tǒng)分辨率:
在 Linux 系統(tǒng)上,一個(gè)像素的大小由系統(tǒng)分辨率確定。 |
| 'normalized' | 這些單位依據(jù)父容器進(jìn)行歸一化。容器的左下角映射到?(0,0),右上角映射到?(1,1)。 |
| 'inches' | 英寸。 |
| 'centimeters' | 厘米。 |
| 'points' | 磅。1 磅等于 1/72 英寸。 |
💗Resize?-?可調(diào)整大小
可調(diào)整大小的 UI 圖窗,指定為?'on'?或?'off',或者指定為數(shù)值或邏輯值?1?(true) 或?0?(false)。值?'on'?等效于?true,'off'?等效于?false。
當(dāng)此屬性設(shè)置為?'on'?時(shí),UI 圖窗可調(diào)整大小。否則將無法調(diào)整其大小。
??繪圖
💗Colormap?-?UIAxes?內(nèi)容的顏色圖
UIAxes?內(nèi)容的顏色圖,指定為由 RGB(紅色、綠色、藍(lán)色)三元組組成的?m×3?數(shù)組,這些三元組定義?m?種單獨(dú)的顏色。
示例:?uifigure('Colormap',[1 0 1; 0 0 1; 1 1 0])?將顏色圖設(shè)置為三種顏色:品紅色、藍(lán)色和黃色。
MATLAB 按行號(hào)訪問這些顏色。
💗Alphamap?-?坐標(biāo)區(qū)內(nèi)容的透明度映射
坐標(biāo)區(qū)內(nèi)容的透明度映射,指定為由介于?0?和?1(包含這兩個(gè)邊界值)之間的值組成的向量。該向量的大小可以是 m×1 或 1×m。MATLAB 通過 alpha 值在向量中的索引訪問 alpha 值。Alphamap 可以為任意長度。
??鼠標(biāo)指針
💗Pointer?-?指針符號(hào)
指針符號(hào),指定為下表中的值之一,或指定為?'custom'。符號(hào)的外觀與操作系統(tǒng)相關(guān)。
| 'arrow' | |
| 'ibeam' | |
| 'crosshair' | |
| 'watch'(系統(tǒng)忙) | |
| 'topl'?或?'botr' | |
| 'topr'?或?'botl' | |
| 'circle' | |
| 'cross' | |
| 'fleur' | |
| 'left'?或?'right' | |
| 'top'?或?'bottom' | |
| 'hand' |
??標(biāo)識(shí)符
💗Name?-?名稱
圖窗的名稱,指定為字符向量或字符串標(biāo)量。
示例:?uifigure('Name','Results')?將圖窗的名稱設(shè)置為?'Results'。
💗Icon?-?圖標(biāo)源或文件
圖標(biāo)源或文件,指定為字符向量、字符串標(biāo)量或?m×n×3 真彩色圖像數(shù)組。如果指定文件名,它可以是 MATLAB 路徑中的圖像文件名或圖像文件的完整路徑。
支持的圖像格式包括 JPEG、PNG、GIF 和?m×n×3 真彩色圖像數(shù)組。
如果沒有足夠的空間顯示完整大小的圖標(biāo),MATLAB 會(huì)縮小圖像以適應(yīng)空間。
示例:?'icon.png'?指定 MATLAB 路徑中的圖標(biāo)文件。
示例:?'C:\Documents\icon.png'?指定圖像文件的完整路徑。
示例:?fig = uifigure('Icon','peppers.png')?使用指定的圖標(biāo)圖像文件創(chuàng)建一個(gè) UI 圖窗。
💗NumberTitle?-?使用帶編號(hào)的標(biāo)題
指定為?'off'?或?'on',或者指定為數(shù)值或邏輯值?1?(true) 或?0?(false)。值?'on'?等效于?true,'off'?等效于?false。
將此屬性設(shè)置為?'on'?時(shí),UI 圖窗的標(biāo)題包含短語?'Figure n',其中?n?是數(shù)字。
NumberTitle?和?IntegerHandle?屬性都必須設(shè)置為?'on'?才能顯示標(biāo)題中的數(shù)字。
🚩創(chuàng)建可視化圖窗
??語法
- fig?= uifigure?創(chuàng)建一個(gè)用于構(gòu)建用戶界面的圖窗并返回?Figure?對象。這是 App 設(shè)計(jì)工具使用的圖窗類型。
- fig?= uifigure(Name,Value)?使用一個(gè)或多個(gè)?Name,Value?對組參數(shù)指定圖窗屬性。
??示例
💗創(chuàng)建默認(rèn)的 UI 圖窗
fig = uifigure;💗設(shè)置和訪問屬性
- 創(chuàng)建具有特定標(biāo)題的 UI 圖窗
- ?獲取該圖窗的位置、寬度和高度
💗更改圖窗大小
創(chuàng)建默認(rèn) UI 圖窗。
fig = uifigure;獲取該圖窗的位置、寬度和高度。
fig.Positionans =681 559 560 420這意味著圖窗窗口位于主顯示畫面左下角的右側(cè) 681 像素和上方 559 像素處,寬 560 像素,高 420 像素。
通過調(diào)整位置向量的第三個(gè)和第四個(gè)元素,將圖窗寬度和高度減半。
fig.Position(3:4) = [280 210];💗創(chuàng)建模態(tài) UI 圖窗
創(chuàng)建兩個(gè) UI 圖窗窗口。通過將圖窗 2 的?WindowStyle?屬性值指定為?'modal'?來阻止圖窗 1 中的交互。請注意,在圖窗 2 關(guān)閉之前,您無法與圖窗 1 交互。
fig1 = uifigure('Name','Figure 1'); fig1.Position = [500 500 370 270];fig2 = uifigure('Name','Figure 2'); fig2.Position = [540 450 370 270]; fig2.WindowStyle = 'modal';💗編寫 CloseRequestFcn 以確認(rèn)關(guān)閉 UI 圖窗
編寫?CloseRequestFcn?回調(diào),以便在用戶試圖關(guān)閉窗口時(shí)打開模態(tài)“確認(rèn)”對話框。
function closeFig fig = uifigure('Position',[100 100 425 275]); fig.CloseRequestFcn = @(src,event)my_closereq(src);function my_closereq(fig)selection = uiconfirm(fig,'Close the figure window?',...'Confirmation');switch selectioncase 'OK'delete(fig)case 'Cancel'returnendendend點(diǎn)擊圖窗中的關(guān)閉按鈕。“確認(rèn)”對話框隨即打開。
💗更改鼠標(biāo)指針符號(hào)
更改將鼠標(biāo)懸停在普通按鈕上時(shí)顯示的鼠標(biāo)指針符號(hào)。
此程序文件名為?setMousePointer.m,該文件可以做如下說明:
-
創(chuàng)建一個(gè) UI 圖窗,該圖窗在鼠標(biāo)移至按鈕上時(shí)執(zhí)行自定義代碼。為此,使用?@?運(yùn)算符將?mouseMoved?函數(shù)句柄賦給該圖窗的?WindowButtonMotionFcn?屬性。
-
創(chuàng)建一個(gè)普通按鈕,并指定其坐標(biāo)和標(biāo)簽。
-
創(chuàng)建一個(gè)名為?mouseMoved?的回調(diào)函數(shù),其中包含當(dāng)鼠標(biāo)移到該按鈕上時(shí)要執(zhí)行的自定義代碼。在函數(shù)中,查詢?CurrentPoint?屬性以確定鼠標(biāo)指針坐標(biāo)。如果指針坐標(biāo)在普通按鈕坐標(biāo)內(nèi),則將?Pointer?屬性設(shè)置為?'hand'。
運(yùn)行?setMousePointer。然后將鼠標(biāo)移到該普通按鈕上,以查看鼠標(biāo)指針符號(hào)從箭頭變?yōu)槭中巍?/p> function setMousePointer fig = uifigure('Position',[500 500 375 275]); fig.WindowButtonMotionFcn = @mouseMoved;btn = uibutton(fig); btnX = 50; btnY = 50; btnWidth = 100; btnHeight = 22; btn.Position = [btnX btnY btnWidth btnHeight]; btn.Text = 'Submit Changes';function mouseMoved(src,event)mousePos = fig.CurrentPoint;if (mousePos(1) >= btnX) && (mousePos(1) <= btnX + btnWidth) ...&& (mousePos(2) >= btnY) && (mousePos(2) <= btnY + btnHeight)fig.Pointer = 'hand';elsefig.Pointer = 'arrow';endend end
?創(chuàng)建用于設(shè)計(jì) App 的圖窗 - MATLAB uifigure- MathWorks 中國
🌟全文共5112個(gè)字,碼字總結(jié)不易,老鐵們來個(gè)三連:點(diǎn)贊、關(guān)注、評(píng)論🌟
🌟作者:左手の明天🌟
🌟原創(chuàng)不易,轉(zhuǎn)載請聯(lián)系作者并注明出處🌟
總結(jié)
以上是生活随笔為你收集整理的Matlab GUI编程技巧(十):ui figure函数创建可视化图窗的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ESP32-S3 LVGL http下载
- 下一篇: 手柄xinput模式_玩家新宠,谷粒金刚