Tạo hình nền cho giao diện GUI

April 27, 2008

Chào các bạn.

Trong bài này mình sẽ hướng dẫn các bạn tạo hình nền hoặc một phần của giao diện GUI.

Ý tưởng: dùng một Axes control để load hình ảnh. Như vậy, ngay khi chạy GUI thì ảnh đã hiển thị lên axes rồi nên trông như là hình nền của GUI vậy. Vì thế, chúng ta phải viết lệnh hiển thị hình ảnh vào hàm CreateFcn: là hàm được gọi lên trước khi giao diện GUI hiển thị trước người dùng.

Các bạn tạo một giao diện GUI đơn giản gồm có: axes control với kích thước chính là vùng các bạn cần đặt hình nền. Các điều khiển khác các bạn đặt trên cái axes này nên mình chỉ thêm vài điều khiển nhưng không viết lệnh cho các điều khiển này.

Click vào Axes control chọn hàm CreateFunction:

Khi đó chúng ta chỉ cần gõ lệnh để hiển thị hình ảnh vào hàm này mà thôi:

Trong bài này mình chọn hình ở trong C:\Documents and Settings\All Users\Documents\My Pictures\Sample Pictures, các bạn có thể chọn đường dẫn tùy ý đến hình mà các bạn thích hiển thị.

Để biết thêm về lệnh hiển thị hình ảnh, các bạn gõ lệnh:

help imshow

Vì bài này đơn giản nên mình không cần phải upload source lên cho các bạn nữa nhé.

Khi chạy chương trình sẽ hiển thị như thế này:


Chúc các bạn thành công.

Các bài viết liên quan:

  1. Lập trình giao diện GUI trong Matlab (Phần 1) Mình viết bài này để tổng hợp lại các hướng dẫn về thiết kế giao diện GUI trong Matlab để các bạn dễ dàng thực hiện. Phần mềm: Matlab R2007a Bài đầu tiên mình sẽ giới thiệu các bạn giao diện GUI. 1. Mở phần mềm Matlab, gõ lệnh sau vào cửa sổ Command >> [...]...
  2. Tạo file .exe cho giao diện GUI Matlab Chào các bạn. Sau khi các bạn đã biết cách để viết một giao diện GUI, biết cách dịch ra file .exe tự chạy trên một máy khác thì bây giờ mình kết hợp làm sao đây ?? Bài này mình dịch một project GUI tương đối là nhiều thành phần: RS232 Communication đã được [...]...
  3. Thay đổi giao diện cho blog Chào các bạn. Mình bức xúc về cái theme của blog này lâu rồi, nhưng do chưa tìm được theme ưng ý nên cứ để cho nó như vậy. Bây giờ thấy bên anh Hiệp có theme đẹp và đúng ý mình nên xin luôn. Bản thân cái theme mới này là bản phải trả [...]...
  4. SkyDrive- 25 GB lưu trữ trực tuyến với giao diện tiếng Việt Mình đọc bài viết này tại trang "Xã hội thông tin" thấy hay nên copy sang đây để cập nhật thêm cho cái SkyDrive. Như vậy bây giờ chúng ta có tận 25GB để chia sẻ tài liệu rồi, tha hồ mà dùng hehe. Điều quan trọng là không có quảng cáo, tốc độ download [...]...
  5. Lập trình giao diện với Python: QT Edition PyQT là gì ? PyQt is a comprehensive set of Python bindings for the Qt cross-platform GUI/XML/SQL C++ framework from Qt Software (renamed from Trolltech). PyQt provides bindings for Qt 2 and Qt 3. PyQt4, a separate set of bindings, covers the Qt 4 series of releases. PyQt implements around 300 classes and over 5,750 [...]...
  6. Vẽ đồ thị trong Matlab Mình đang làm đồ án về đề tài giao tiếp máy tính và vđk qua công com, mình có 1 thắc mắc mong được các bạn chỉ giáo: khi dữ liệu được truyền vào máy tính thì có sự kiện BytesAvailable, mình viết hàm serial_Callback() để đọc dữ liệu này như sau: function serial_CallBack(obj,event) inval=fread(obj,1); [...]...

{ 41 comments… read them below or add one }

hung_dtvt May 9, 2008 at 9:17 am

Sao em là như anh vậy cuối cùng hiện cái hình bên trên có thêm cái đường dẫn nữa anh ơi.:D :D :D

Reply

TRALAM May 17, 2008 at 2:38 am

Anh ơi, em muốn đưa hình ảnh kiểu như thế này: trong màn hình chính em đặt một nút bấm, kích vào nó thì hiện ra hình ngay mà cái hình ở dạng nguyên thủy của nó (đuôi file là gì thì giữ nguyên), chứ em ko muốn đưa cái hình này vào một file GUI khác được ko hả anh?

Reply

Heoratmap May 24, 2008 at 8:39 pm

Anh oi! Anh cho em hoi nha! O day la minh hien thi mot file anh co san ha anh! Con neu minh muon tao nut nhan thi lam sao day

Reply

bqthanh June 24, 2008 at 8:36 am

anh Bắc ơi, làm sao quay lại cái trang mà mình đã thiết kế, sau khi đóng nó em muốn sữa đổi thiết kế thì ko biết vô chỗ nào để sữa

Reply

bqthanh June 25, 2008 at 9:17 pm

chào anh Bắc.Trong cái viewCallback thì có 4 cái là:
callback,creatFcn,deleteFcn,ButtondownFcn,KeypressFcn.
anh có thể nói rõ chức năng của từng cái giúp em không ạ, lúc nào thì ta nên dùng cái này, được phép dùng cái này trong trường hợp nào.

Làm phiền anh quá. Chúc anh thành công trong sự nghiệp

Reply

bqthanh June 27, 2008 at 2:53 am

chào anh Bắc. Anh có thể cho em địa chỉ mail của anh được không ạ. Em muốn gửi bài để anh xem giùm em.

cảm ơn anh nhiều

Reply

bqthanh June 27, 2008 at 11:04 pm

Chào anh.

Cái đồ án tốt nghiệp 04.06.08.pps mà anh đã làm đó. Anh còn tài liệu hay anh biết link nào chỉ về cách để làm báo cáo dạng pps này không ạ,nếu còn anh có thể share cho em được ko ạ. Báo cáo dạng này thích thật hay hơn powerpoint nhiều.

Cảm ơn anh.Hỏi bài anh nhiều mà quên hỏi thăm: Hiện nay anh đang làm gì?

Chúc anh hạnh phúc và thành công trong sự nghiệp.

Reply

bqthanh June 28, 2008 at 6:57 am

Chào anh Bắc.

vậy chắc là em ko có cơ hội làm cái này rùi, em ở tận Nha Trang thì làm sao đến chỗ anh được, mà công nhận làm slide dạng đó báo cáo sẽ rất lôi cuốn người xem hơn nhỉ. Tiết thật không có cơ hội để học hỏi anh rùi,đúng là không được học ở thành phố lớn nên thiếu đủ thứ anh ơi, thiếu thầy giỏi, bạn giỏi để học hỏi…

À anh Bắc ơi khi nào anh rãnh anh xem giúp em cái chương trình đó với, em đang rất rất cần để làm tiếp, sắp tới thời gian phải nộp bài cho Thầy rùi

chúc anh hạnh phúc và thành công trong sự nghiệp.

Reply

bqthanh June 28, 2008 at 10:51 am

Chào anh

Làm phiền anh nhiều quá ngại ghê, làm anh phải cài lại win XP nữa, thôi cái pps em chắc chắn sẽ tự tìm hiểu được anh khỏi phải gửi,dù sao cũng cảm ơn anh nhiều. Nói thật mấy hôm trước em như đứa bé mới tập bò trong ma trận Matlab còn bây giờ thì em đã chuyển sang giai đoạn đi rùi anh Bắc à (bắt đầu hiểu rõ hơn).

chúc anh hạnh phúc và thành công trong sự nghiệp.

Reply

bqthanh June 29, 2008 at 9:12 pm

Chào anh!

Anh Bắc có biết hàm nào trong Matlab làm cho chữ chạy không ạ.

Chúc anh thành công trong công việc.

Reply

bqthanh June 30, 2008 at 2:42 am

Hi Anh.
Anh có thể nói cụ thể hơn không ạ, em đọc help nhưng vẫn chưa làm được. À anh Bắc đã xem giúp em cái chương trình đó chưa ạ,anh chỉ cần bỏ hết các cái axes chỉ giữ lại 1 cái axes để load image lên mà không có báo lỗi là ok rùi anh ạ.

chúc anh thành công

Reply

bqthanh July 1, 2008 at 1:56 am

Hi anh.
Em cho chữ chạy được rùi. Cảm ơn anh nhiều
Chúc anh thành công trong công việc.

Reply

quang December 27, 2010 at 1:29 pm

ban oi co the share cho minh cai chay chu trong lap tring guide matlab dc khong minh lam mai nhung ko ra

Reply

Никита Хрущев May 2, 2009 at 5:12 am

Обратись ко мне в аську 126407165. Есть кое-что по твоему вопросу.

Reply

ngohaibac May 2, 2009 at 9:46 am

Я прошу прощения, у меня нет учетной записи ICQ. Вы можете связаться со мной через Yahoo: haibac_ac_hut

Reply

Adobe Fotoshop CS3 May 4, 2009 at 1:08 pm

С майскими праздниками вас, между прочим!

Reply

Биохимик May 14, 2009 at 3:13 am

Чего-то никто мне отвечать не хочет :(

Reply

Kieu Minh Giap April 16, 2010 at 1:31 pm

anh làm ơn cho em hỏi khi thiết kế giao diện trên GUI em dùng các pushbutton để gọi các chương trình con vẽ đồ thị thì nó hiển thị toàn màn hình GUI nên khi muốn thực hiện nút nhấn tiếp theo em phải tắt GUI này đi và chạy lại,vậy em muốn làm cho nó(đồ thị được hiển thị)chỉ nằm trên 1 axes thì phải làm sao?mong anh giúp đỡ.Cảm ơn anh nhiều!

Reply

ngohaibac April 16, 2010 at 5:47 pm

Chào em.

Trước khi gọi lệnh hiển thị ảnh, em dùng lệnh axes để cho Matlab biết hiển thị lên axes chứ k phải lên figure. Ví dụ:
axes(handles.axes1);

Chúc em thành công.

Reply

vinhtungbk October 19, 2010 at 7:00 pm

anh bắc ơi! cho em hỏi em muốn tạo hình nền cho giao diện gui mà em định copy code vào USB
nộp cho thầy giáo, vậy làm sao để kéo hình nền đi theo cho giao diện em co phai thay đổi đường dẫn vào trong usb không
cảm ơn anh nhiều!

Reply

admin May 9, 2008 at 12:49 pm

Quái nhỉ.

Em làm lại xem sao nhé. Nếu mà hiện hình được tức là ok rùi. Còn hiện chữ lên thì chắc là em đã thêm cái Static Text rùi.

Chúc em thành công.

Reply

bqthanh June 24, 2008 at 7:06 pm

đúng như hùng nói, em cũng hiện được ảnh lên rùi, nhưng trên ảnh lại có thêm cái path của ảnh đó, vậy vô chỗ nào để bỏ static text vậy anh Bắc

Reply

admin May 17, 2008 at 6:44 am

Được chứ em, cái hình của anh nó hiện lên chính cái GUI anh đang thao tác mà em.

Muốn hiện khi nhấn nút thì em cho lệnh imshow vào trong hàm ngắt của nút đó là được em ạ.

Chúc em thành công.

Reply

TRALAM May 18, 2008 at 6:57 am

Hihi, ý e là thế này anh ạ. Giả sử em có GUI1, trong đó em có sử dụng một nút bấm để hiện thị 1 sơ đồ tham khảo. Cái sơ đồ đó hiển nhiên là ko nằm trong GUI1 đó, cho nên em muốn nó hiển thị ra dạng ảnh rời, mà em biết là phải sử dụng một GUI khác (GUI2) để cho nó hiển thị lên, rồi cái nút bấm thì sử dụng lệnh gọi GUI2. Em muốn hỏi là mình ko cần GUI2 mà ảnh hiện thị lên như là một ảnh nguyên gốc của nó luôn (khỏi qua GUI)thì làm thế nào hả anh? Hay bắt buộc là phải dùng GUI2. Cảm ơn anh trước nhé.

Reply

admin May 18, 2008 at 6:26 pm

Em cứ dùng lệnh plot bình thường trong hàm Callback của nút bấm đó thì nó sẽ tự vẽ ra một cái figure mới.

Nếu em dùng lệnh imgshow thì em thử dùng lệnh

figure; % tạo ra một figure mới, hoặc figure(1) tạo figure với tên là 1

Cái này anh chỉ nghĩ, chưa thử với lệnh imshow.

Chúc em thành công.

Reply

admin May 24, 2008 at 8:52 pm

Chào em.

Nếu em muốn tạo một nút ấn em dùng lệnh uicontrol để tạo nút bấm hay bất kì điều khiển nào khác.

Tham khảo: http://www.mathworks.com

Trong lệnh này, em thay Style bằng các giá trị tên của điều khiển tương ứng {pushbutton} | togglebutton | radiobutton | checkbox | edit | text | slider | frame | listbox | popupmenu. Giá trị mặc định của nó là pushbutton.

Chúc em thành công.

Reply

admin June 24, 2008 at 10:26 am

Chào em.

Em gõ lại lệnh GUIDE trong cửa sổ command để sửa thiết kế giao diện nhé.

Chúc em thành công.

Reply

bqthanh June 24, 2008 at 6:51 pm

cảm ơn anh, em đã làm được rùi

Reply

admin June 25, 2008 at 12:29 am

Chào em.

Em upload cái project của em lên SkyDriver cho anh xem thử xem các em làm có đúng không nào ?

Anh nghĩ chắc là bọn em gặp một vấn đề nhỏ nào đó.

Chúc em thành công.

Reply

admin June 26, 2008 at 4:21 pm

Chào em.

Hàm Callack sẽ được gọi khi em tác động vào đối tượng đó: như nhấn nút bấm, gõ chữ vào edit box,…

Hàm CreatFcn được gọi khi điều khiển được tạo ra. Hàm này được gọi ra ngay trước khi các điều khiển được hiển thị đầy đủ trên GUI. Do đó, hàm này có thể coi như hàm khởi tạo cho đối tượng.

Hàm DeleteFcn: được gọi khi đối tượng bị xóa khỏi GUI, hàm này gọi trước khi đối tượng chính Figure bị delete. Hàm này dùng thao tác thực hiện các công việc lưu dữ liệu để tránh mất mát khi ứng dụng bị ngừng đột ngột.

Hàm ButtonDownFcn xảy ra khi em nhấn phím chuột. Là hàm Windows để bắt sự kiện nhấn chuột.

Hàm KeyPressFcn xảy ra khi em gõ bất kì phím nào trên keyboard. Nó sẽ có tham số là phím em gõ là gì.

Chúc em thành công.

Reply

bqthanh June 26, 2008 at 5:54 pm

cảm ơn anh nhiều. Em đã hiểu

Reply

Ngô Hải Bắc June 27, 2008 at 5:21 am

Chào em.

Em xem thông tin liên hệ của anh tại đây: http://www.ngohaibac.net/about/

Chúc em thành công.

Reply

bqthanh June 27, 2008 at 7:25 am

chào anh
em đã gửi bài của em vào mail của anh. Anh xem giúp em.
chúc anh hạnh phúc và thành công trong sự nghiệp

Reply

admin June 27, 2008 at 12:18 pm

Chào em.

Để anh xem rồi có gì sẽ reply lại cho em sau nha.

Chúc em thành công.

Reply

admin June 28, 2008 at 2:25 am

Chào em.

Slide đó anh làm bằng Powerpoint 2007 mà em :mrgreen: . Có mấy đứa em nó cũng khoái anh làm he he. Thích thì khi nào đến anh chỉ cho. Vì khi làm anh muốn người xem có cái nhìn tổng quát và slide có rất là nhiều thông tin chứ không phải là vài chữ là xong một slide.

Chúc em thành công.

Reply

admin June 28, 2008 at 8:03 am

Chào em.

Anh cài lại Matlab trên Win XP rồi em ạ. Sẽ sớm xem bài cho em.

Tại anh đang dùng Ubuntu khoái quá nên k muốn chuyển sang Win :mrgreen: . Mà cái Matlab cho Linux này đang bị hâm nên chưa xem được.

Em có thích thì anh gửi file PowerPoint cho mà tự nghiên cứu (gửi vào qthanh.vn@gmail.com nha).

Thực ra, em có mạng Internet là quá đủ rùi. Tất cả anh đều học trên mạng cả mà em. Còn cái design đó là ý tưởng của anh thôi, chẳng phải của ai cả. Và khi đó thì nghĩ cách dùng công cụ có sẵn để phục vụ mình thôi.

Chúc em thành công.

Reply

admin June 28, 2008 at 3:24 pm

Chào em.

Không phải đâu em ạ. Anh chỉ ghost lại bản WinXP của anh lúc đầu cài thôi. Anh có 2 bản Ghost mà :D .Vì anh khoái Ubuntu nên không thích Win nữa nên chỉ cài những phần mềm chuyên dụng mà Ubuntu không cài được hoặc phức tạp khi cài thôi.

Bản thân anh thấy Matlab rất hay. Nói chung là phải biết sáng tạo một chút khi dùng các công cụ em sẽ thấy kết quả thật tuyệt vời.

Chúc em thành công.

Reply

admin June 29, 2008 at 9:56 pm

Chào em.

Em phải hiểu chữ chạy là gì ? Khi em trả lời được câu hỏi đó thì coi như em đã có câu trả lời rồi đó.

Em chỉ cần thay đổi nội dung của chữ đó trong một khoảng thời gian T nào đó. Thì khi đó em sẽ thấy chữ chạy thôi.

Tóm lại, em nên dùng với ngắt timer nào đó nhé.

Chúc em thành công.

Reply

admin June 30, 2008 at 5:43 am

Chào em.

Tại anh bận quá vì đang làm vài công việc mà nên chưa xem cho em được.

Nói đơn giản là: chữ chạy thực chất là các String nó thay đổi sau một khoảng thời gian nào đó. Ví dụ nhé:

T = 0 : Str =”Anh Yeu Em “;
T = 100ms : Str =”nh Yeu Em A”;
T = 200ms : Str =”h Yeu Em An”;
T = 300ms : Str =” Yeu Em Anh”;
….
Tương tự, em thấy ngay là chữ chạy đúng không. Vì vậy sẽ cập nhật String sau một khoảng thời gian nào đó. Cái này em làm là dùng ngắt của Timer, em hoàn toàn có thể làm được.

Search với Keyword: Timer trong Help của Matlab nhé.

Chúc em thành công.

Reply

admin July 1, 2008 at 2:16 am

Chào em.

Chúc mừng em đã thành công nhé.

Nếu đã thành công rồi thì viết bài chia sẻ cho các bạn nhé em. Chúng ta cùng học tập mà. Em có quyền Author mà.

Chúc em thành công.

Reply

NẤM RƠM December 1, 2008 at 12:24 am

Muốn kết hơp giữa labview với matlab phải làm sao hả anh Bắc?Em vô mathscript của LV chạy phần demo của NI đưa thì chạy được,còn load file của mình vô thì chạy không được :?: :cry: …Anh chỉ cho em với.

Reply

Leave a Comment

Previous post:

Next post: