Tạo hình nền cho giao diện GUI
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:







33 Comments
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
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.
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?
Đượ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.
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é.
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
Cái này anh chỉ nghĩ, chưa thử với lệnh imshow.
Chúc em thành công.
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
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.
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
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.
cảm ơn anh, em đã làm được rùi
đú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
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.
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
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.
cảm ơn anh nhiều. Em đã hiểu
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
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.
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
Chào em.
Để anh xem rồi có gì sẽ reply lại cho em sau nha.
Chúc em thành công.
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.
Chào em.
Slide đó anh làm bằng Powerpoint 2007 mà em
. 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.
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.
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.
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.
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.
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.
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.
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
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.
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.
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.
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
…Anh chỉ cho em với.