How can I stop image stretching using imshow in the new App designer?
12 次查看(过去 30 天)
显示 更早的评论
I am using the new App Designer and the "imshow" function to display a greyscale image. When I resize the app the image is stretched. How can I ensure the aspect ratio of the image is maintained? Thanks, Shaun
0 个评论
回答(2 个)
Chris Portal
2016-11-6
There are a few ways to do this, depending on the complexity of your app...
1) The simplest would be to turn off the auto resize option in App Designer. Select the UI figure in App Designer's design view, and uncheck the Resize components when app is resized option. The downside is you will lose the convenient auto resizing of your components when the app window is resized.
2) If you'd like to keep the auto resizing of your components, you could try adding the following line to your App Designer code after you display your image. Assuming the UI axes in your app has been named "UIAxes":
set(app.UIAxes, 'Units', 'Pixels')
3) If neither of the above options are acceptable, you would need to implement a SizeChangedFcn in App Designer by right clicking on the UI figure and going to callbacks. This would allow you to have full control of how every component is resized, but would require you to code up the logic manually.
Hope this helps!
2 个评论
Chris Portal
2016-11-19
Sorry to hear Shaun. I took a quick peek at GUIDE. By default, the figure GUIDE creates is set to not allow resizing.
If you enable figure resizing though, you get the same results as option 1 above where you end up with lots of unused space. If you're seeing something different in this case, it might help to see some of your GUIDE code to see how you're calling IMSHOW, or perhaps seeing a listing of axes property/value configurations.
Hope you're able to get things working!
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Develop Apps Using App Designer 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!