在软件开发过程中,图形元素必不可少,而在WPF中如果使用jpg或png等格式,在应用到Button等控件时的样式时,常常需要做MouseEnter,MouseDown鼠标事件提供不同的颜色或特效。一个图标得分别生成三种颜色才行。如下:
Normal:
MouseEnter:
MouseDown:
且jpg与png等文件,如果生成大尺寸应用于小的图标会产生锯齿,如果生成小尺寸应用于大的图标则会模糊。
所以,最佳的方式是使用系统能直接识别的特殊符号,如✎❤等,可以拷贝到控件的Content或Text等属性中直接使用,在Trigger或事件中更改Foreground即可,且它在WPF渲染中是矢量的,不必担心它会产生锯齿或模糊等问题。但是系统能直接识别的图标只有部分且对于其它第三方图形它就无能为力了。所以对于第三方的图形,最好的解决方式是将图形转化为Path数据,可在Path控件中使用。
开始
方式1:
网上查找图标直接复制数据,适用于现有图形Path数据;若只是没有Path数据,请看方式2。
推荐一个非常不错的图标网站阿里的iconfont,下面以这个图标网站为示例获取Path的数据 。
链接-> iconfont
1 进入搜索找到想要的图标(注意,某些图标只是帖个,这种不是Path数据的无法获取,必须找图标是Path数据的)。然后点击下载按钮。
2在新的窗体中,按F12调出查看网页代码。当前在火狐浏览器为例,点击选取页面元素按钮后,鼠标移动到图标并点击,选择图标元素。
注意,选中的元素可能有多个嵌套,选中后下方代码出现Path的那个才是正确的。
3双击该段代码,将d=""里面的数据选中并拷贝到Geometry资源中:
4资源调用:
方式2:
没有Path数据 ,只有的将图形元素转换成Path数据直接在项目中引用。
使用的工具有:
1VisualStudio
2Photoshop
3Microsoft Expression Design 4
接下来,跟着我一步步 *** 作即可:
1 将要转换的图标文件导入Photoshop,然后选择快速选择工具:
2鼠标点击选中要转换的图形,如图中4个方框就是:
3右键选中的图形,选择建立工具路径,后面d出窗口设置容差,可根据图形的精度决定。
4在 路径 选项卡可以看到刚刚添加的工作路径,点击添加图层蒙版
5在属性选项卡中点击选择矢量蒙版。此时在图层中可以看到有图层、图层蒙版和矢量蒙版三个。
6依次点击 文件--> 存储为 将文件将文件导出为psd文件。
Photoshop的处理到此结束 ,接下来是使用Microsoft Expression Design 4将psd文件转换为Path
7 在Microsoft Expression Design 4中打开刚刚生成的psd文件,直接按Ctrl+E导出,格式选择XAML WPF资源字典
打开刚刚生成的xaml文件,将引号内的Clip或ClipGeometry的数据复制(字符可能非常长如果对精度要求不是那么高,可以后面写个方法把小数点后的值去掉),在Path的Data属性中粘贴。
效果图
最后
有比较简单的图形还是可以在Microsoft Expression Design 4中画出来,画的图形会比PS抠的精准,在PS中如果抠不好可能导致图形面目全非。
还有一种方式是直接在PS中生成Path数据,复制数据后做修改,有喜欢这种方式的试试吧
如何通过PS选取获取WPF路径 - 走看看
wpf
c#
ui设计
天水盛凡专利代办:专利申请价格全透明,无隐性收费!
盛凡知识产权
广告
JPG,PNG等格式的转换的ICON保存为ICO文件
449阅读·0评论·0点赞
2011年11月6日
WPF学习之绘图和动画
56W阅读·17评论·37点赞
2012年11月13日
Note插件式开发中WPF的ICON修改方法
34阅读·0评论·2点赞
2022年12月21日
WPF获得PNG外观Path数据
9811阅读·8评论·0点赞
2017年8月14日
利用Path路径设计的按钮图标(Silverlight)
1131阅读·0评论·0点赞
2015年9月14日
在WPF中使用SVG矢量图
3833阅读·0评论·1点赞
2021年8月3日
好消息:专利申请并不麻烦,这有专利申请流程及费用,立即查询!
盛凡知识产权
广告
Expression Design 4工具与Expression Blend 4工具
910阅读·0评论·0点赞
2019年3月1日
android vector矢量图画图详解
7543阅读·0评论·6点赞
2016年5月8日
WPF中如何在Image控件中显示动态生成的Path?
1516阅读·0评论·0点赞
2018年12月20日
PSD路径转换为 WPF path 的data
259阅读·0评论·0点赞
2018年4月2日
C# 绘图3 路径Path & OnPaint方法
1442阅读·0评论·1点赞
2017年2月13日
Android进阶之路 - Uri、Path、File、Bitmap 转换方式
5307阅读·1评论·1点赞
2018年10月13日
WPF开发教程
23W阅读·5评论·50点赞
2019年7月2日
WPF绘制矢量图(网址收藏)
1428阅读·0评论·0点赞
2020年1月8日
WPF中制作立体效果的文字或LOGO图形
14W阅读·0评论·1点赞
2008年4月20日
CMAKE 批量获取目录下指定类型文件并转换为相对路径
810阅读·0评论·1点赞
2021年3月28日
WPF大缩小后显得模糊/锯齿怎么办
685阅读·0评论·1点赞
2020年5月18日
WinForm和WPF中使用字体图标ICON
1369阅读·0评论·0点赞
2022年2月16日
Svg 图标转换成Wpf path Geometry
2824阅读·2评论·0点赞
2020年12月22日
去首页
看看更多热门内容
在WPF开发中,如果您需要给第三方软件开发插件,可以通过以下步骤获取Application对象:
1、在插件代码中引用PresentationFramework程序集。这个程序集通常可以在以下路径中找到:C:\Windows\MicrosoftNET\Framework\v40xxxxx(根据您的NETFramework版本不同可能会有所不同)。
2、在插件的入口方法或初始化方法中,使用ApplicationCurrent属性来获取当前应用程序的Application对象。
以写一个通用类, 以扩展的附加属性附加到所有的 UIElement (已经写好了, 但不贴出来了, 留点思考) 但给个大概的
先说写好这个类后, 在 xaml 中如何对 UIElement 设置快捷键
假定这个类叫 MyHotKeyClass, 在命名空间 WPFApp1 上
下面是一份 xaml 档, Window 为根元素, 包含一个 StackPanel, 而 StackPanel 有 Button, Image 两个子元素, 现在对 Button 设置快捷键 为 Ctrl + F, 对应 Click 事件; 对 Image 设置快捷键为 Shift + D, 对应 MouseLeftButtonDown 事件:
首先在 Window 引用 xmlns
<Window
xmlns:sk="clr-namespace:WPFApp1"
>
<StackPanel>
<Button Content="Button"
sk:MyHotKeyClassAccessKey="F"
sk:MyHotKeyClassModifierKey="Control"
sk:MyHotKeyClassRoutedEvent=""
Click="Button_Click"
/>
<Image Source="C:\wpfjpg" Stretch="None"
sk:MyHotKeyClassAccessKey="D"
sk:MyHotKeyClassModifierKey="Shift"
sk:MyHotKeyClassRoutedEvent=""
MouseLeftButtonDown="Image_MouseLeftButtonDown"
/>
</StackPanel>
</Window>
只是写一个类, 然后 就可以在各个 xaml 引用了, 非常简单
但如何编写这个 MyHotKeyClass 呢
首先, 它是一个普通类, (有些网站说非要从 DependencyObject 衍生, 其实不是必须的), 从上面设置可以看出, 它至少有三个 附加属性 (DependencyProperty): AccessKey, ModifierKey, RoutedEvent
于是有了下面这个类的结构:
namespace WPFApp1
{
public class MyHotKeyClass
{
// 设置一个 AccessKey 的附加属性
public static readonly DependencyProperty AccessKeyProperty
= DependencyPropertyRegisterAttached("AccessKey", typeof(Key), typeof(MyHotKeyClass), new UIPropertyMetadata());
public static Key GetAccessKey(DependencyObject source)
{
return (Key)sourceGetValue(AccessKeyProperty);
}
public static void SetAccessKey(DependencyObject source, Key value)
{
sourceSetValue(AccessKeyProperty, value);
}
// 其余两个 ModifierKey 和 RoutedEvent 对应的元数据类型分别是
// typeof(ModifierKeys) 和 typeof(RoutedEvent)
// 详细的就不写了, 和第一个 AccessKey 的定法基本上一致
}
}
最后测试这个类的工作, 在 Window 对应的类下写好按钮 Click 事件:
Button_Click()
{
MessageBoxShow("Button was clicked");
}
Image_MouseLeftButtonDown()
{
}
当按下 Ctrl + F 时, 就相当于点击了按钮, 当按下 Shift + D 时就相当于在 Image 控件上点了鼠标左键
-------- END ----
关键点是 写好 DependencyProperty
Good Luck
/// <summary>
/// 获取网卡硬件地址
/// </summary>
/// <returns> string </returns>
//using SystemManagement;
public string GetMoAddress()
{
string MoAddress = " ";
using (ManagementClass mc = new ManagementClass("Win32_NetworkAdapterConfiguration"))
{
ManagementObjectCollection moc2 = mcGetInstances();
foreach (ManagementObject mo in moc2)
{
if ((bool)mo["IPEnabled"] == true)
MoAddress = mo["MacAddress"]ToString();
moDispose();
}
}
return MoAddressToString();
}
以上就是关于设计文件转曲转path全部的内容,包括:设计文件转曲转path、wpf给第三方软件开发插件怎么获取application.c、wpf中怎样在按钮上显示快捷方式的图标等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)