J'ai un fichier clickmouse avec le contenu suivant:
Vous pouvez copier le code dans un fichier clickmouse.m que vous sauvez en work pour voir l'effet de ce code.Et cliquez sur la figure pour voir l'effet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 function clickmouse fig = figure('MenuBar', 'none', 'Name', 'Clickmouse', ... 'DoubleBuffer', 'on', 'NumberTitle', 'off', ... 'WindowButtonUpFcn', @ButtonUp, ... 'Position', [200, 200, 600, 500]); ax = axes('ButtonDownFcn',@NewPoint,... 'XLim', [0, 1], 'YLim', [0, 1]); cmenu = uicontextmenu; uimenu(cmenu, 'Label', 'Delete', 'Callback', @DeletePoint); pnts = line('XData', [], 'YData', [], ... 'ButtonDownFcn', @ButtonDown, ... 'LineStyle','None', ... 'Marker', 'o', ... 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', ... 'UIContextMenu', cmenu); function NewPoint(h, eventdata) if isequal(get(fig, 'SelectionType'), 'normal') p = get(ax, 'CurrentPoint'); XData = get(pnts, 'XData'); YData = get(pnts, 'YData'); XData = [XData, p(1,1)]; YData = [YData, p(1,2)]; set(pnts, 'XData', XData, 'YData', YData); end; end; function ButtonDown(h, eventdata) p = get(ax, 'CurrentPoint'); p = p(1, 1:2); XData = get(pnts, 'XData'); YData = get(pnts, 'YData'); moving_point = FindPoint(p, XData, YData); set(fig, 'WindowButtonMotionFcn', @MovePoint, ... 'Pointer', 'Circle'); function MovePoint(h, eventdata) p = get(ax, 'CurrentPoint'); p = p(1, 1:2); XData(moving_point) = p(1); YData(moving_point) = p(2); set(pnts, 'XData', XData, 'YData', YData); end; end; function ButtonUp(h, eventdata) set(fig, 'WindowButtonMotionFcn', '', ... 'Pointer', 'Arrow'); end; function DeletePoint(h, eventdata) p = get(ax,'CurrentPoint'); p = p(1, 1:2); XData = get(pnts, 'XData'); YData = get(pnts, 'YData'); i = FindPoint(p, XData, YData); XData(i) = []; YData(i) = []; set(pnts, 'XData', XData, 'YData', YData); end; function i = FindPoint(p, XData, YData); [m, i] = min((XData - p(1)).^2 + (YData - p(2)).^2); end; end
Maintenant ce que je veux faire:
Bon. C'est que je veux faire c'est de l'integrer dans mon pushbutton1_callback.
Sur ma forme test.fig j'ai
-un button load image pour mettre en axes1 une image.
-1axes (qui m'apporte l'image par le pushbutton2_callback)
-1pushbutton1 (ou je vais faire l'integration dans pushbutton1_callback)
Ce que je veux faire c'est quand je presse sur le button pushbutton1 je veux marquer avec cette couleur bleu au click du mouse le contenu de ma photo en axes1 c'est tous ce que je veux faire.
Sur ma forme il y a un pushbutton2(qui met mon image en axes) et pushbutton1 dont je veux appliquer ce code du gui12.m a mon composante axes1.
Certains idees?
J'ai integre en pushbutton1_callback :
Mais il me donne cette erreur:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88 function gui12 fig = figure('MenuBar', 'none', 'Name', 'Gui12', ... 'DoubleBuffer', 'on', 'NumberTitle', 'off', ... 'WindowButtonUpFcn', @ButtonUp, ... 'Position', [200, 200, 600, 500]); ax = axes('ButtonDownFcn',@NewPoint,... 'XLim', [0, 1], 'YLim', [0, 1]); cmenu = uicontextmenu; uimenu(cmenu, 'Label', 'Delete', 'Callback', @DeletePoint); pnts = line('XData', [], 'YData', [], ... 'ButtonDownFcn', @ButtonDown, ... 'LineStyle','None', ... 'Marker', 'o', ... 'MarkerFaceColor', 'b', 'MarkerEdgeColor', 'b', ... 'UIContextMenu', cmenu); function NewPoint(h, eventdata) if isequal(get(fig, 'SelectionType'), 'normal') p = get(ax, 'CurrentPoint'); XData = get(pnts, 'XData'); YData = get(pnts, 'YData'); XData = [XData, p(1,1)]; YData = [YData, p(1,2)]; set(pnts, 'XData', XData, 'YData', YData); end; end; function ButtonDown(h, eventdata) p = get(ax, 'CurrentPoint'); p = p(1, 1:2); XData = get(pnts, 'XData'); YData = get(pnts, 'YData'); moving_point = FindPoint(p, XData, YData); set(fig, 'WindowButtonMotionFcn', @MovePoint, ... 'Pointer', 'Circle'); function MovePoint(h, eventdata) p = get(ax, 'CurrentPoint'); p = p(1, 1:2); XData(moving_point) = p(1); YData(moving_point) = p(2); set(pnts, 'XData', XData, 'YData', YData); end; end; function ButtonUp(h, eventdata) set(fig, 'WindowButtonMotionFcn', '', ... 'Pointer', 'Arrow'); end; function DeletePoint(h, eventdata) p = get(ax,'CurrentPoint'); p = p(1, 1:2); XData = get(pnts, 'XData'); YData = get(pnts, 'YData'); i = FindPoint(p, XData, YData); XData(i) = []; YData(i) = []; set(pnts, 'XData', XData, 'YData', YData); end; function i = FindPoint(p, XData, YData); [m, i] = min((XData - p(1)).^2 + (YData - p(2)).^2); end; end
http://img16.imageshack.us/img16/4825/clickmousey.jpg
Guidez-moi ce que je dois faire.
Partager