【问题标题】:WPF line color is darker than its brush colorWPF 线条颜色比其画笔颜色深
【发布时间】:2017-06-22 16:08:28
【问题描述】:

在我的 WPF 应用程序中,我使用一条线和一些矩形来制作图形。但是,当我将线设置为白色时,它显示为灰色。我将线条颜色更改为与旁边的红色矩形相同,很明显线条更暗。这是我对直线和矩形的实例化:

<Line Grid.Row="2" X1="0" Y1="0" X2="0" Y2="105" 
                  StrokeThickness="1" Stroke="{StaticResource FgRedBrush}" SnapsToDevicePixels="True" UseLayoutRounding="True"
                  Margin="10 0 0 10" VerticalAlignment="Bottom" StrokeEndLineCap="Flat" />
            <Rectangle Grid.Row="2" Width="100" Height="30"
                       Fill="{StaticResource FgGreenBrush}"
                       Margin="11 0 0 25" VerticalAlignment="Bottom" HorizontalAlignment="Left" />
            <Rectangle Grid.Row="2" Width="170" Height="30" 
                       Fill="{StaticResource FgRedBrush}"
                       Margin="11 0 0 70" VerticalAlignment="Bottom" HorizontalAlignment="Left" />

另外,这里是组件的图片:

不要介意硬编码,我只是对布局有所了解。

定义画笔资源的文件:

<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
                xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
                xmlns:local="clr-namespace:Financial_Manager.Colors">

<Color x:Key="ForegroundLight">#D7F6F6</Color>
<Color x:Key="ForegroundDark">#898989</Color>
<Color x:Key="ForegroundPurple">#D228FF</Color>
<Color x:Key="ForegroundBlue">#4DC6D2</Color>
<Color x:Key="ForegroundOrange">#F99D10</Color>
<Color x:Key="ForegroundGreen">#37AE53</Color>
<Color x:Key="ForegroundRed">#CE260B</Color>
<Color x:Key="ForegroundYellow">#CCFF00</Color>

<SolidColorBrush x:Key="FgLightBrush" Color="{StaticResource ForegroundLight}" />
<SolidColorBrush x:Key="FgDarkBrush" Color="{StaticResource ForegroundDark}" />
<SolidColorBrush x:Key="FgPurpleBrush" Color="{StaticResource ForegroundPurple}" />
<SolidColorBrush x:Key="FgBlueBrush" Color="{StaticResource ForegroundBlue}" />
<SolidColorBrush x:Key="FgOrangeBrush" Color="{StaticResource ForegroundOrange}" />
<SolidColorBrush x:Key="FgGreenBrush" Color="{StaticResource ForegroundGreen}" />
<SolidColorBrush x:Key="FgRedBrush" Color="{StaticResource ForegroundRed}" />
<SolidColorBrush x:Key="FgYellowBrush" Color="{StaticResource ForegroundYellow}" />

<Color x:Key="BackgroundLight">#0D0A1C</Color>
<Color x:Key="BackgroundDark">#080610</Color>

<SolidColorBrush x:Key="BgLightBrush" Color="{StaticResource BackgroundLight}" />
<SolidColorBrush x:Key="BgDarkBrush" Color="{StaticResource BackgroundDark}" />

【问题讨论】:

  • 能否包含定义fgRedBrush 的资源文件?尽管从您的代码中看起来 stroke 和 fill 都使用相同的值,但您可能会根据上下文得到不同的定义(例如,这个值可能定义了两次;一次用于目标类型行,一次用于目标类型矩形。
  • 我正在用它更新问题
  • @JohnLBevan {StaticResource FgRedBrush} 这应该有什么不同,仅仅因为它使用了两次? Brush 资源没有目标类型。
  • 是的,这不重要,但我包括它以防万一
  • 线条的默认样式不会降低其不透明度吗? 2倍以上的厚度看起来怎么样?

标签: c# wpf colors line


【解决方案1】:

在cmets中Clemens的帮助下,我发现随着线条粗细接近2,颜色值接近真实颜色。虽然我仍然不知道为什么并且愿意学习,但临时解决方法是将厚度设置为 1.99,以便颜色 显示 相同。虽然厚度本质上是 2,但它仍然具有与 1 相同的视觉外观。

【讨论】:

  • 您是否尝试将 X1 和 X2 设置为 0.5?可能还有RenderOptions.EdgeMode="Aliased"
猜你喜欢
  • 2012-06-20
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 2016-12-06
  • 2010-12-12
  • 2017-10-25
  • 2011-10-25
  • 1970-01-01
相关资源
最近更新 更多