任何人都可以建议何时SnapsToDevicePixels在WPF 4.0中使用?
它是否应该仅在有问题的情况下偶尔使用,在整个应用程序中,只在某些控件或什么?
如果我DropShadowEffect向父元素添加一个子元素的文本是模糊的.为什么?
<Grid>
<Grid.Effect>
<DropShadowEffect />
</Grid.Effect>
<Grid.ColumnDefinitions>
<ColumnDefinition />
</Grid.ColumnDefinitions>
<Grid.RowDefinitions>
<RowDefinition />
</Grid.RowDefinitions>
<TextBlock Background="White">Test</TextBlock>
</Grid>
Run Code Online (Sandbox Code Playgroud)
更新:
与阴影

没影子
以树形式在DAG中布置顶点(即顶部没有内边的顶点,顶点仅依赖于下一层上的顶点等)是相当简单的,没有图形绘制算法,如Efficient Sugiyama.但是,是否有一个简单的算法可以最大限度地减少边缘交叉?(对于某些图形,可能无法完全消除边缘交叉.)图片说千言万语,所以有一种算法可以提示没有交叉边缘的东西.(与此相比).
我已经接受了Senthil的建议graphviz/dot - 快速浏览文档确认它很容易用作库或外部工具,并且输出格式非常容易解析.但是,我最终选择使用GraphSharp,因为我已经在使用.NET等(虽然它绝对没有dot那么强大).结果是"足够好",并且通过一点边缘路由和调整可以做得更好(模糊文本是因为3.5 WPF).
这是完整的 C#代码(这是引用QuickGraph或GraphSharp的所有代码 - 是的;就这么简单):
internal static class LayoutManager
{
private const string ALGORITHM_NAME = "EfficientSugiyama";
private const bool MINIMIZE_EDGE_LENGTH = true;
private const double VERTEX_DISTANCE = 25;
private const double LAYER_DISTANCE = 25;
private const double MIN_CANVAS_OFFSET = 20;
public static void doLayout(GraphCanvas canvas)
{
// TODO use a background thread
// TODO add comments
canvas.IsEnabled = false;
canvas.Cursor …Run Code Online (Sandbox Code Playgroud) 我知道这是一个非常主观的问题,但由于WPF中的文本呈现仍然是一个问题,我必须充分利用它.
在WPF应用程序中,文本往往变得模糊,这不是什么秘密.还有关于这个主题的无数网站以及你如何解决这个问题.但我想知道......文字模糊似乎比其他人更多地影响某些字体.所以我仍然在寻找最好的字体来解决这个问题.
到目前为止,我仍在使用Arial,看起来不太好.但我相信其他一些字体更适合手头的任务.
我有一个在键入时垂直增长的文本框.不幸的是,当我输入一个长文本(例如一个3行文本)时,它的某些部分变得模糊.更重要的是,当我阻止它垂直生长并使其水平生长时,它工作得很好 - 文本很清晰.
我尝试过的:
UseLayoutRounding = true;
RenderOptions.TextRenderingMode = "ClearType";
Run Code Online (Sandbox Code Playgroud)
请忘了
TextOptions.TextFormattingMode = "Display"
Run Code Online (Sandbox Code Playgroud)
它必须是"理想的".
查看截图:
我尝试使用 DropShadowEffect,但当您增加 BlurRadius 时,它的“发光”强度会减弱。我想要像下图一样具有强烈的外发光。
如果我将相同的效果叠加十几次,我就能得到这个,但此后性能就会下降。使用 WPF 可以实现单一效果吗?
当我使用RenderTransform属性并向上扩展RichTextBox时,我获得了像素化的放大文本(方形文本边缘).
我怎么能阻止这个?

编辑:
我有TextOptions.TextFormattingMode ="显示" - 当我删除此选项时一切都很好!
我正在开发一个WPF应用程序,但我注意到在某些字体大小的情况下,文本的渲染效果不如您在控制面板 - >字体中看到的样本.我正在使用大型Segoe UI字体(FontSize="36"),并且在直立线上效果更明显,例如字母"U"可能在一侧比另一侧稍厚.).
字体质量在某些字体大小FontSize="48"上有所改善,例如(我认为相当于36pt),但使用有限数量的字体大小并不总是实用的.
我可以通过将以下属性应用于TextBlock来提高字体质量: -
TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType"
Run Code Online (Sandbox Code Playgroud)
鉴于质量的提高,我很想知道为什么WPF不会为所有文本执行此操作,还是归结为性能?我正在考虑创建一个全局样式以将其应用于所有控件,或者这会导致问题吗?
(我尝试上传截图,但SO必须以低质量存储图像,而你无法确定字体问题).
我在StackPanel中有更多的扩展器(Orientation = Vertical).当我扩展一个时,扩展的一个下面的其他人似乎是模糊的.就像它SnapsToDevicePixels = False一样.
我认为问题可能在StackPanel中,因为它不支持.NET 3.5(我使用)中的UseLayoutRounding.这可能或问题可能在其他地方吗?
我几乎到处都把SnapsToDevicePixels ="True",但没有改变.
(字体大小为12因此它不能[1]:WPF模糊字体问题 - 解决方案)
我想绘制一个字符串并以自定义角度旋转它。简单地说,我计算包含旋转图像的区域的新尺寸,然后创建一个位图对象,并通过它的图形对象,我绘制一个具有 3 次变换(平移到中心、旋转和反向平移)的字符串。我编写了以下代码,但质量不理想。有没有人有想法?
private Image RotateText(string Text, int FontSize, float Angle)
{
//Modify angle
Angle *= -1;
//Calculate rotation angle in radian
double AngleInRadian = (Angle * 2 * Math.PI) / 360d;
//Instantiate a font for text
Font TextFont = new Font("Tahoma", FontSize, FontStyle.Bold);
//Measure size of the text
Graphics Graphic = this.CreateGraphics();
SizeF TextSize = Graphic.MeasureString(Text, TextFont);
//Calculate size of the rotated text
double NewWidth = Math.Abs(TextSize.Width * Math.Cos(AngleInRadian)) + Math.Abs(TextSize.Height * Math.Sin(AngleInRadian));
double NewHeight = Math.Abs(TextSize.Width * Math.Sin(AngleInRadian)) …Run Code Online (Sandbox Code Playgroud) wpf ×11
c# ×5
.net ×3
blurry ×2
graphics ×2
.net-3.5 ×1
algorithm ×1
blur ×1
clarity ×1
dropshadow ×1
effects ×1
font-size ×1
fonts ×1
glow ×1
graph ×1
richtextbox ×1
stackpanel ×1
textbox ×1
textrenderer ×1
xaml ×1