2017-04-09 93 views
1

考慮在UWP應用程序,這是一個網格內的唯一元素(省略了簡潔)何保持InkCanvas招內InkCanvas在UWP

<InkCanvas x:Name="inkCanvas" Width="500" Height="500"/> 

繪製其某處開始InkCanvas內中風以下InkCanvas並延長InkCanvas邊界之外的中風。從視覺上來說,您會覺得筆畫在邊界處結束(例如在InkCanvas的右邊緣)。但是這是錯誤的。通過按鈕調整InkCanvas的大小,例如

private void SizeButton_Click(object sender, RoutedEventArgs e) 
    { 
    inkCanvas.Width = 2000; 
    inkCanvas.Height = 2000; 
    } 

並且您將看到在InkCanvas外部繪製的筆畫部分。 如果您將筆畫保存爲GIF或ISF,無論是否調整大小,這部分都將顯示出來,這非常不幸。在Windows Store中有幾個具有墨跡功能的應用程序存在此問題。

問題:爲什麼是這樣的,我們該如何避免它?

回答

2

我曾在InkCanvas之前與團隊合作製作墨水軟件,並且遇到了同樣的問題。 「當用戶將筆拖到矩形區域並允許他們進行書寫時,我們該怎麼辦?」我們最終得出了與InkCanvas一樣的結論,這是保持路徑的。

這個決定的原因是在嘗試&錯誤後出現的。

我們嘗試剪切路徑,即將其切斷,並與邊緣相交。但是我們遇到了一個問題,即用戶將筆從盒子裏拿出來,但隨後又回來了。把它想象成一個簽名框。我們給用戶一個虛線區域,他們可以用數字簽名,但幾乎每個人都有一個誇張的簽名,離開了虛線區域的邊界。我們無法裁剪,因爲我們實際上會失去簽名的重要部分。

我們也試圖捕捉到邊緣的路徑。當用戶在盒子外面拖動時,墨水會沿着該區域的邊緣垂直或水平對齊。至少通過這種方法,用戶可以即時獲得在區域外拖動時發生的反饋。這太可怕了。糟糕的用戶體驗以及大量的討厭郵件。

所以......我們離開了它。該方框不會以任何方式影響墨跡。

現在,以幫助你與你的情況。如果要剪裁路徑,可以使用Win2D將累積的墨跡筆觸轉換爲幾何圖形,並與具有與InkCanvas(500x500)相同尺寸的矩形幾何圖形相交。如果你對這個方向感興趣,Mike Taulty has a post about this。我不確定的唯一的事情是,如果你可以採取最後修剪幾何,並將其轉換回InkStroke。這可能是單向操作。你必須挖掘它。

+0

Laith感謝這個信息。我會仔細研究一下,看看我能做些什麼。與此同時,如果您能對以下問題發表評論,如果您有時間,並且與當前主題有相似之處(但與衆不同),我將不勝感激http://stackoverflow.com/questions/43280886/inkcanvas-strokes-沒有適當的界限 - 當切換pc。 – Octopus