百无无无聊赖 2024-11-07 16:14 采纳率: 0%
浏览 3

为什么app designer设计软件的时候,UIAxes显示的图片,会自动缩小?

我使用matlab app designer 设计一个小程序,想在左上角添加一个UIAxes坐标区,显示一个图片logo,但是这张图片总是自动缩小

我使用的是matlab 2017b版本软件

我尝试使用下面方法固定他的大小,但还是不行,

im = imread(file1);  
              im = imresize(im, [1000, 1000]);
              im = imrotate(im, 180);  % 旋转180度来纠正图像方向
            
              imshow(im,'Parent',app.UIAxes);
              set(app.UIAxes, 'Units', 'pixels');  % 设置UIAxes为像素单位
              axis(app.UIAxes, 'tight');  % 自动调整坐标轴范围

我希望显示的图片,能我和设计界面上的UI Axes一样大小。

  • 写回答

1条回答 默认 最新

  • 程风破 Java领域新星创作者 2024-11-08 22:37
    关注

    本答案参考 多次询问 ChatGPT-3.5 后选择的最佳回答,若是满意,还请采纳,谢谢

    1. 可能的原因
      • 坐标轴范围自适应
        • Matlab中,axis('tight')命令会自动调整坐标轴的范围以适应图像数据。这可能导致图像看起来缩小了,因为它会根据图像的实际内容(例如,如果图像周围有空白区域)来调整显示范围。例如,如果你的图像有很多透明像素或者空白边缘,axis('tight')会将坐标轴紧紧贴合图像的有效部分,从而使图像看起来比UIAxes小。
      • 单位换算问题
        • 虽然你设置了UIAxes的单位为pixels,但是图像的显示可能还受到其他因素的影响。在Matlab中,不同的图形对象之间的大小和位置关系可能会因为默认的缩放比例或者坐标系统的转换而发生变化。例如,imshow函数在显示图像时可能会根据UIAxes的当前属性(如Position属性)以及图像本身的尺寸进行内部的调整,而这种调整可能不是按照你预期的方式进行的。
      • 版本兼容性问题
        • Matlab 2017b版本可能存在一些关于App DesignerUIAxes显示图像的特定问题或者特性。较新的Matlab版本可能已经修复了一些与图形显示相关的问题,在这个版本中,可能存在图像显示大小与预期不符的情况。
    2. 解决方案
      • 调整坐标轴属性
        • 除了设置axis('tight'),你可以尝试手动设置坐标轴的范围。例如,如果你的UIAxes大小是固定的(假设宽度为width像素,高度为height像素),你可以使用axis([0 width 0 height])来确保坐标轴的范围与UIAxes的大小一致。修改后的代码如下:
          ```matlab
          im = imread(file1);
          im = imresize(im, [1000, 1000]);
          im = imrotate(im, 180); % 旋转180度来纠正图像方向

    imshow(im,'Parent',app.UIAxes);
    set(app.UIAxes, 'Units', 'pixels'); % 设置UIAxes为像素单位
    axis(app.UIAxes, [0 size(im, 2) 0 size(im, 1)]);% 根据图像尺寸设置坐标轴范围

       - **调整图像显示方式**
         - 可以尝试使用`image`函数代替`imshow`来显示图像。`image`函数在处理图像在坐标轴中的显示时可能会有不同的行为。例如:
    ```matlab
    im = imread(file1);  
    im = imresize(im, [1000, 1000]);
    im = imrotate(im, 180);  % 旋转180度来纠正图像方向
    
    image(im,'Parent',app.UIAxes);
    set(app.UIAxes, 'Units', 'pixels');  % 设置UIAxes为像素单位
    axis(app.UIAxes, 'off');% 关闭坐标轴显示,根据需要调整
    
    • 检查UIAxesPosition属性
      • 确保UIAxesPosition属性设置正确。Position属性决定了UIAxesApp Designer界面中的大小和位置。如果这个属性设置不当,可能会导致图像显示不正常。你可以在App Designer的属性检查器中查看和调整UIAxesPosition属性,或者在代码中使用set函数来设置,例如:
        set(app.UIAxes,'Position',[x y width height]);% 根据实际需求设置x,y坐标以及宽度和高度
        
    评论

报告相同问题?

问题事件

  • 创建了问题 11月7日

悬赏问题

  • ¥50 关于#html5#的问题:H5页面用户手机返回的时候跳转到指定页面例如(语言-javascript)
  • ¥15 无法使用此凭据登录,因为你的域不可用,如何解决?(标签-Windows)
  • ¥15 yolov9的训练时间
  • ¥15 二叉树遍历没有报错但无法正常运行
  • ¥15 在linux系统下vscode运行robocup3d上场球员报错
  • ¥15 Python语言实验
  • ¥15 SAP HANA SQL 增加合计行
  • ¥20 用C#语言解决一个英文打字练习器,有偿
  • ¥15 srs-sip外部服务 webrtc支持H265格式
  • ¥15 在使用abaqus软件中,继承到assembly里的surfaces怎么使用python批量调动