大家好我对以下代码有疑问:
im = imread('hans65.tif');
f = figure('visible','off');
imshow(im, 'Border', 'tight');
rectangle('Position', [950, 500, 20, 80], 'EdgeColor','k', 'FaceColor','k')
rectangle('Position', [920, 530, 80, 20], 'EdgeColor','k', 'FaceColor','k')
% rectangle('Position', [400, 100, 10, 10]);
% rectangle('Position', [600, 100, 10, 10]);
set(gcf,'PaperPositionMode','auto')
print(f, '-dpng', 'hans12.png');
% splash('hans12','png',10000);
splash('hans12','png',5000);
目前代码正在将图片加载到matlab中。 更改图片并在启动画面中显示已安全的图片。
我现在想做的是:
在我看到启动画面的过程中,按下鼠标右键或左键可以看到另一个启动画面(右侧pic1和左侧pic2)。 我在互联网上搜索但找不到任何解决方案。
欢呼你们!我试过了:
function main
im = imread('hans65.tif');
f = figure('visible','off'); imshow(im, 'Border', 'tight');
rectangle('Position', [950, 500, 20, 80],...
'EdgeColor', 'k',...
'FaceColor','k')
rectangle('Position', [920, 530, 80, 20],...
'EdgeColor', 'k',...
'FaceColor','k')
rectangle('Position', [400, 100, 10, 10]);
rectangle('Position', [600, 100, 10, 10]);
set(gcf,'PaperPositionMode','auto')
print(f, '-dpng', 'hans12.png');
s = SplashScreen( 'Splashscreen', 'hans12.png');
set(s, 'buttondownfcn', @clicky);
function clicky(gcbo, eventdata, handles)
pause(4)
delete(s)
现在我收到此错误消息:
名称'buttondownfcn'不可访问 类的实例的属性 '溅射屏幕'。
我不知道如何解决这个错误。干杯
答案 0 :(得分:0)
好的,我明白了。由于看起来你至少有一些编程经验,所以我不会深入细节。
在这个link中,您可以看到使用回调函数的类。你需要做的是访问你的SplashScreen对象的matlab“plot object”(我的意思是matlab在你的child
中识别为figure
的对象)的句柄。该对象是必须删除的对象。
更实际的是,buttondownfunction
需要应用于图f
和clicky
内,您需要删除保存图像的对象(这是一个matlab对象)。这将引用plottable对象,它很可能是SplashScreen的成员变量。最简单的方法应该是声明您的SplashScreen数组(或结构?)全局,这意味着您可以从clicky
内轻松访问它。否则,您需要做一些工作来设置正确的gui并使用handles
输入(回调函数中的第三个输入)来访问您的SplashScreen数组/结构。然后,让SplashScreen对象具有 handle
成员(图中的句柄)以及 position
(多边形?)。当然,你可以有更多的成员,但这些都是必要的。
如果在触发clicky时鼠标位于多边形内部,则删除图中的句柄并将成员变量设置为,例如NaN(因为在matlab中不存在null。这在matlab中不是必需的,但是很好实践是永远不会有引用不引用的东西)。然后删除SplashObject(因为它不再使用)。
完成后,请务必使用clear global
删除全局变量,因为正常的clear
或clear all
并不能完全清除全局变量。
希望这有效。否则请评论。