[問題] 得到plot的zoom的大小
在畫圖時
figure的menu上
有可以zoom in zoom out 的兩個按鈕
可以放大和縮小圖
比方說我zoom in了兩次
我該如何讓程式知道我目前的圖已經zoom了多少次了嗎?
我的問題是發生在
我想在一張figure上
在滑鼠點擊的位置畫出一個紅色點
並且可以配合zoom in使用
程式碼如下
f=figure(1) ;
imshow('cell.tif') ;
set(f,'windowbuttondownfcn',[' ;' ...
'imshow(''cell.tif'') ;' ...
'hold on ;' ...
'CurrentPt=get(gca,''CurrentPoint'') ;' ...
'plot(CurrentPt(1,1),CurrentPt(1,2),''ro'') ;' ...
'hold off;']) ;
可是每次zoom in完
點擊下一個點後
圖片又會zoom out回原始大小
不知道有沒法可以克服
只要能得到zoom了幾次的值
或許可以利用zoom(Factor)來設定
--
推
05/04 23:21, , 1F
05/04 23:21, 1F
→
05/04 23:24, , 2F
05/04 23:24, 2F
→
05/05 19:59, , 3F
05/05 19:59, 3F
→
05/05 20:00, , 4F
05/05 20:00, 4F
→
05/05 20:00, , 5F
05/05 20:00, 5F
→
05/05 20:01, , 6F
05/05 20:01, 6F
→
05/05 20:02, , 7F
05/05 20:02, 7F
→
05/05 20:02, , 8F
05/05 20:02, 8F
我後來自己把問題解決了一半
把程式加上2行就可以了
f=figure(1) ;
imshow('cell.tif') ;
set(f,'windowbuttondownfcn',[' ;' ...
'zoom reset ;' ...
'imshow(''cell.tif'') ;' ...
'zoom out ;' ...
'hold on ;' ...
'CurrentPt=get(gca,''CurrentPoint'') ;' ...
'plot(CurrentPt(1,1),CurrentPt(1,2),''ro'') ;' ...
'hold off;']) ;
zoom reset 設定目前zoom的狀態為起始狀態
zoom out 返回zoom的原始狀態
但是還是有一個問題
這麼做的話
點選figure上的zoom out按鈕
就沒辦法恢復成圖片的原始大小了
不知道有沒有辦法可以解決
※ 編輯: diva 來自: 140.112.103.220 (05/05 20:14)
推
05/05 20:50, , 9F
05/05 20:50, 9F
→
05/05 20:50, , 10F
05/05 20:50, 10F
→
05/05 20:51, , 11F
05/05 20:51, 11F
→
05/05 20:52, , 12F
05/05 20:52, 12F
的確 如你所說
set可以解決zoom的問題
感謝!!
另外想請問一下
你提到應該用set而不是重畫
請問用set有什麼好處嗎?
因為set和重畫比起來
程式量好像差不多
針對我原來的寫法
我也找到解決的方法了
f=figure(1) ;
imshow('cell.tif') ;
set(f,'windowbuttondownfcn',[' ;' ...
' ;' ...
' ;' ...
'XLim=get(gca,''XLim'') ;' ...
'XTick=get(gca,''XTick'') ;' ...
'XTickLabel=get(gca,''XTickLabel'') ;' ...
'YLim=get(gca,''YLim'') ;' ...
'YTick=get(gca,''YTick'') ;' ...
'YTickLabel=get(gca,''YTickLabel'') ;' ...
' ;' ...
'imshow(''cell.tif'') ;' ...
' ;' ...
' ;' ...
'set(gca,''XLim'',XLim) ;' ...
'set(gca,''XTick'',XTick) ;' ...
'set(gca,''XTickLabel'',XTickLabel) ;' ...
'set(gca,''YLim'',YLim) ;' ...
'set(gca,''YTick'',YTick) ;' ...
'set(gca,''YTickLabel'',YTickLabel) ;' ...
' ;' ...
'hold on ;' ...
'CurrentPt=get(gca,''CurrentPoint'') ;' ...
'plot(CurrentPt(1,1),CurrentPt(1,2),''ro'') ;' ...
'hold off;']) ;
※ 編輯: diva 來自: 140.112.103.220 (05/05 22:29)
※ 編輯: diva 來自: 140.112.103.220 (05/05 22:30)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
2
12
MATLAB 近期熱門文章
PTT數位生活區 即時熱門文章