2012-10-09 9 views
3

以下問題。我只是試圖用C#繪製小東西。我想用Canvas做到這一點。但即使沒有畫布,線條也顯示模糊。在簡單演示項目中已經失敗的最簡單的事情是以下代碼:帶和不帶帆布的模糊線條。沒有辦法實現任何像素捕捉方式?

<UserControl x:Class="Drawing.MainPage" 
    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
    xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
    xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" mc:Ignorable="d" 
    d:DesignHeight="300" d:DesignWidth="400"> 

    <Grid x:Name="LayoutRoot" Background="White"> 
     <Line Y1="1" Y2="300" StrokeThickness="1" 
       Stroke="Black" Margin="10 0 0 0"/> 
    </Grid> 
</UserControl> 

這行只是顯示模糊。我已經嘗試了這麼多,但我無法弄清楚如何實現清晰和一個像素寬的線條。

我嘗試以下操作:

  • UseLayoutRounding="True"
  • 我試過像素鯛類 - 提供here - 不工作對我來說,無論是。這裏的Xavier Poinasthread)的答案,他有明顯的相同的問題,也沒有用這個自定義像素捕捉器:「座標我似乎明白,這個類通過捕捉項目的邊界來圓化像素,但座標我使用的已經是整數,並且在路徑的情況下,捕捉邊界可能並不意味着內容也落在圓像素上。「

這很好,如果找到了解決方案,它允許我捕捉由Canvas保存的行。

原因是:由於技術原因,我們需要一個無邊框OOB應用程序,它實現了自定義邊框(調整大小)以及包含最小化,最大化和關閉項目的自定義應用程序欄。我只是想通過手繪這些圖標,通過線等:

BarIcons

是否有可能更簡單的方法?我只是不想使用圖像資源。謝謝!

任何幫助將大大讚賞。

+0

我不知道了很多關於Silverlight的,但我在想,你不上的像素boundry繪製準確。當我在WPF中處理這種事情時,我得到了很多。對我來說,我是在畫布上的整數位置繪製的...但是我的畫布沒有完全對準像素邊界(它正在居中,並且像素數量使得它在像素之間對齊。) – Beska

回答

5

座標是像素之間的點。

您看到的模糊線條是渲染引擎試圖在兩個像素之間平均分散繪圖的結果,1px線將覆蓋這種情況。

這允許引擎從0,0到maxX,maxY工作並仍然使用部分像素渲染。

將0.5加到你的座標上,它會顯得很尖銳。

,或者上傳到0.5,0.5

+0

我有昨天我和其中一位同事聊了兩個多小時,我們發現了這個解決方案。不過謝謝你。 :) –

相關問題