4

跟随问题。我只是尝试用 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"
  • 我尝试了像素鲷鱼类 -在这里提供- 这对我也不起作用。这里是Xavier Poinas ( thread ) 的答案,他显然有同样的问题,并且这个自定义像素捕捉器也失败了:“坐标我似乎理解这个类通过将项目的边界捕捉到圆形像素来工作,但是坐标我使用的已经是整数,在路径的情况下,捕捉边界可能并不意味着内容落在圆形像素上。” )

如果找到解决方案,那将是很好的,它允许我捕捉由 Canvas 保存的线条。

这样做的原因是:出于技术原因,我们需要一个无边框 OOB 应用程序,它实现了自定义边框(调整大小)以及一个自定义应用程序栏,其中包含最小化、最大化和关闭项。我只是尝试通过线条等手动绘制这些图标:

条形图标

有没有更简单的方法?我只是不想使用图像资源。谢谢!

任何帮助将不胜感激。

4

1 回答 1

5

坐标是像素之间的点。

您看到的模糊线是渲染引擎试图在 1px 线将覆盖的两个像素之间平均分布的结果,在这种情况下。

这允许引擎从 0,0 工作到 maxX,maxY 并且仍然使用部分像素渲染。

将 0.5 添加到您的坐标中,它会显得像大头钉一样锋利。

或者翻译成0.5,0.5

于 2012-10-09T22:03:05.267 回答