2014-01-22 39 views
1

我正在寫一個應用程序,我的寫作工作正常,但我想要實現的是可變筆劃寬度,以便寫作非常逼真和直觀,如完成由「BAMBOO」和「PENULTIMATE」申請。在iOS中繪製可變寬度的路徑

首先,我想告訴你我所嘗試過的。

1)在iOS中,根據我的研究,它們沒有壓力檢測或速度檢測。對於速度檢測,我必須使用OPENGL。

2)由於這些限制,我嘗試使用本教程中給出的方法,它是相當平直forward.Here是鏈接http://mobile.tutsplus.com/tutorials/iphone/ios-sdk-advanced-freehand-drawing-techniques/

3)這工作得很好,但在這裏發生的事情是,寬度隨着我移動速度的加快而下降,隨着移動速度的減慢而增加但我想要的是相反的效果,即寬度應該隨着移動速度的增加而增加,當我快速移動時,厚度應該只能在邊緣和整條線上看到。

下面是BAMBOO應用程序和我的應用程序的屏幕截圖。

1)竹應用

enter image description here

在上述圖像中,線畫有速度和你會看到,厚度僅在邊緣。

2)我的應用程序

enter image description here

在這裏你會看到該行是在邊緣薄,厚的每一個地方人。

因此,這裏有我的疑惑

1)是他們的任何更好的方法來滿足我的要求,比我還嘗試過其他。 2)如果我已經嘗試過,是解決問題的正確方法,那麼我需要做出什麼改變才能達到預期的效果。

問候 蘭吉特

+0

好像你幾乎在那裏,只是修改代碼,改變寬度的速度相反依賴關係 –

+0

嘿大衛,我沒有得到它,你能在代碼中指出什麼需要改變。 – Ranjit

+2

這個問題的答案在你鏈接到的同一篇文章中。我剛剛搜索了「寬度」一詞(請參閱我的答案)。這確實是你應該能夠自己做的事情。 –

回答

2

如何在您發佈的鏈接中找到如何反轉寬度行爲和(甚至與您的問題相同的問題)的答案。我所做的只是以搜索單詞「寬度」

的問題(我的高亮是不是報價的一部分):

這樣做的最終版本似乎工作的第一個版本的對面。我想讓用戶移動得更慢,而不是更薄。 我在哪裏更改代碼以反轉最後變化的厚度以執行或像筆一樣?意思是用戶移動較慢的筆或放下較多的墨水......謝謝!偉大的教程,順便說一句...

而答案:

感謝偉大的教程!

這些變化我得到了相對線寬cahnge效果:

#define CAPACITY 100 
#define FF 20.0 
#define LOWER 0.01 
#define UPPER 1.5 

float frac1 = clamp(FF/len_sq(pointsBuffer[i], pointsBuffer[i+1]), LOWER, UPPER); // ................. (4) 
float frac2 = clamp(FF/len_sq(pointsBuffer[i+1], pointsBuffer[i+2]), LOWER, UPPER); 
float frac3 = clamp(FF/len_sq(pointsBuffer[i+2], pointsBuffer[i+3]), LOWER, UPPER); 

在同一鏈接的文本的另一個搜索「浮動frac1 =」顯示,這種變化應被加到線76- 78(某處裏面touchesMoved:withEvent:代碼中的文章)

+0

檢查出來,我會回到你身邊 – Ranjit

+0

我試過了,但它的工作原理非常糟糕。我想我需要玩FF,LOWER和UPPER值。說啥?。如果我寫得很慢,它會變得很厚很奇怪。 – Ranjit

+0

你好@David,你能幫我解決這個問題 – Ranjit

0

在你的touchesBegan:方法,UItouch供應。
UITouch低於實例功能,

– locationInView: 
– previousLocationInView: 

及以下物業

@property(nonatomic, readonly) NSTimeInterval timestamp 

從上面的,我想你可以很容易地計算velocity.I沒有通過任何提及links.I的只是去想給你一個關於如何基於觸摸對象計算功能的想法。

+0

鑑於OP發佈了他的結果的屏幕截圖,我假設他已經完成了速度計算。 –

+0

是的,它就像你說的那樣是一個「假設」。就他的知識而言,iam提到上面所以他不需要依賴其他一些代碼。 – santhu

+0

所以,你覺得這回答OP的問題,還是更好的一個信息 –