在第一次的基础上重新梳理了一下思路
形式上想要模仿苹果的灵动岛,但是需要做动画效果,改变窗体,实现上比较费时间,而且每个功能要重新考虑排布,比较麻烦。单独弹窗实现起来比较简单。
最终还是两种都用吧。
让文字更锐利:UseLayoutRounding="True"
WPF中文字发虚的问题解决
声明中添加属性
TextOptions.TextFormattingMode="Display" TextOptions.TextRenderingMode="ClearType" TextOptions.TextHintingMode="Fixed" UseLayoutRounding="True"
说明
1.TextFormattingMode
它提供了两种设置:
· Ideal —— WPF4之前的模式
· Display —— 新的模式,可以使字体显示更清晰
(一般将TextFormattingMode设置为Display,可以提高字体显示的清晰度)
2.TextRenderingMode
设置渲染模式,可以有以下设置:
Auto – This mode will use ClearType unless system settings have been set to specifically disable ClearType on the machine.
Aliased – No antialiasing will be used to draw text.
Grayscale – Grayscale antialiasing will be used to draw text.
ClearType – ClearType antialising will be used to draw text.
(一般用ClearType渲染出来的字体会比较平滑)
3.TextHintingMode
获取或设置一个值,该值影响文本元素的呈现行为,这是一种性能优化方式,当您对文本元素的任何文本属性进行动画处理时,可以使用此方式。
此属性的值采用以下两种可能的值:
Animated 通过使用一个更高效、但视觉精确下降的平滑算法来针对动画进行优化。(文本仍然是可读的;精度损失并不严重。)
Fixed(默认值)使用的算法针对视觉上精确的字体平滑效果进行了优化,但当将动画应用于字体元素的属性时,可能导致性能问题以及抖动,尤其是对于 FontSize 或转换/定位/投影。
(在需要对字体做一些动态效果,例如将字体缩放时,使用Animated能获取较高的性能,但同时也影响了其显示的清晰度)
4.UseLayoutRounding
获取或设置一个值,该值确定对象及其可视化子树的呈现是否应使用将呈现与整像素对齐的舍入行为。UserLayoutRounding为False,导致控件布局相对屏幕若不是整数则不会四舍五入,导致边缘模糊。
<Window UseLayoutRounding="True">
<TextBlock TextOptions.TextFormattingMode="Display" TextRenderingMode="Grayscale">
Your text here
</TextBlock>
</Window>
在了解VB和C#的差异之后,我决定放弃使用VB,使用C#来进行下一步的开发,此前的exe打包方法,axml界面可以复用,后端需要把VB改为C#。
VB我已经比较了解,对于学习C#有一定帮助。C#更加强大专业,开源程序更多,《WPF编程宝典》也是以C#为例,所以应该尽早进入C#的学习。后续我将一边深入研究这本书,一边进入“工作助手的下一步开发”
在此附上《WPF编程宝典》PDF和从网站上下载的教学源码
最后是软件目前的效果