自定义WPF窗体形状的实战记录

介绍

你好WPF爱好者。 随着WPF等统一API语言的发明,丰富用户界面变得非常容易。 创建丰富的用户界面只是一个想法。 您需要拥有的是创造性思维和最新技术融合。 WPF和Expression Blend在制作丰富的UI应用程序,清晰的图形和非常好的动画方面非常有用。

在创建WPF应用的时候,你第一个看到的就是窗体类。它作为窗体的基础,提供标准的边框、工具条、最大化、最小化和关闭按钮。WPF窗体是XAML文件和后台代码文件的混合体。

背景

我将要发布的是将窗口矩形形状塑造成图像的形状。 它可以是任何图像,任何形状,任何大小,它应该是没有背景的PNG(便携式网络图形)图像(白色背景被移除)。

代码使用

嗯,实现这一点是小菜一碟,但我仍然会提供一个完整的演练过程。

先决条件

  • .NET FrameWork 3.0或以上
  • Visual Studio 2008或以上
  • Adobe Photoshop或者一个图片编辑工具
  • 您要使用的图像文件
  • XAML相关知识

准备图片文件

  1. 选择要用作窗体形状的图像文件。
  2. 在大多数图像编辑工具中,使图像背景自由是一个非常简单的过程,但是,我将为Adobe Photoshop解释它(因为我喜欢该产品)。
  3. 在Adobe Photoshop中打开图像文件。
  4. 选择除背景之外的整个图像。
  5. 复制选择。
  6. 单击菜单文件>>新建。 这将显示一个对话框。 在对话框的“内容”部分中,选择“透明”,然后单击“确定”。
  7. 将打开透明背景画布,将图像粘贴到那里并将其另存为PNG文件。

现在我们的图像文件准备就绪,让我们现在塑造我们的WPF表格。

设置WPF应用

打开Visual Studio 2008并创建新项目。

在Visual C#项目模板下,选择Windows >> WPF应用。

使用下面的XAML:

<window title="ShapedWindow" windowstartuplocation="CenterScreen" 

 allowstransparency="True" opacitymask="White" windowstyle="None" 

 background="Transparent" width="620" height="267" 

 xmlns:x=http://schemas.microsoft.com/winfx/2006/xaml 

 xmlns=http://schemas.microsoft.com/winfx/2006/xaml/presentation 

 x:class="ShapedWPFForm.ShapedWindow">
 <grid>
  <img name="imgBackground" source="Shape.png" stretch="Fill" />
 </grid>
</window>

所有就完成了

XAML属性解释:

  • allowstransparency="True" - 设置窗体透明度。
  • background="Transparent" - 表明背景是透明的。
  • windowstyle="None" - 此属性删除标题栏并使窗体无边框。 基本上从窗体中删除所有系统控件。
  • opacitymask="White" - 此属性使指定的背景颜色不受窗体的影响。

完成,教程完成。 通过这样做,您可以将图像作为窗体形状。 为您的窗体赋予创意。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • WPF基础教程之形状画刷与变换详解

    形状 在WPF中形状继承自FrameworkElement类.因此,形状是元素,有如下好处. 形状绘制自身.不需要管理无效的情况和绘图过程.例如,移动内容,改变窗口尺寸或改变属性时,不需要手动重新绘制图形. 使用与其他元素相同的方式组织形状.在可任何布局容器中放置图形.(canvas明细是最有用的容器,因为他允许在特性的坐标位置放置形状,当构建复杂的具有多个部分的图画时,很重要.) 图形支持与其他元素相同的事件.如焦点.键盘.鼠标事件. Shape类子类 矩形和椭圆 需要设置Height和Wid

  • 自定义WPF窗体形状的实战记录

    介绍 你好WPF爱好者. 随着WPF等统一API语言的发明,丰富用户界面变得非常容易. 创建丰富的用户界面只是一个想法. 您需要拥有的是创造性思维和最新技术融合. WPF和Expression Blend在制作丰富的UI应用程序,清晰的图形和非常好的动画方面非常有用. 在创建WPF应用的时候,你第一个看到的就是窗体类.它作为窗体的基础,提供标准的边框.工具条.最大化.最小化和关闭按钮.WPF窗体是XAML文件和后台代码文件的混合体. 背景 我将要发布的是将窗口矩形形状塑造成图像的形状. 它可以是

  • 自定义WPF分页控件的全过程记录

    一.分页控件功能说明# 实现如上图所示的分页控件,需要实现一下几个功能: 可以设置每页能够展示的最大列数(例如每页8列.每页16列等等). 加载的数组总数量超过设置的每页列数后,需分页展示. 可以直接点击指定的列数或者上下页按钮进行页面跳转 二.自定义分页控件使用说明# 为了实现以上功能,主要进行以下工作: 1.添加一个自定义按钮PagerButton类,声明一个依赖属性IsActive,用于记录当前页面所在页数的按钮,此时该按钮边框高亮显示,具体代码如下: public class Pager

  • Open-Feign整合hystrix降级熔断实战记录

    目录 一.服务端 1.配置文件 2.控制层 二.客户端 1.依赖 2.配置文件 3.启动类 4.在控制层当中调用 5.创建一个类实现服务FeignClient接口 6.在服务FeignClient接口上配置FallBack实现类 三.测试 1.场景一服务正常调用 2.场景二当被调服务停止运行时 3.场景三当调取服务超时时 4.其他 一.服务端 1.配置文件 application.yml server: port: 9000 spring: application: name: my-test2

  • SpringBoot实战记录之数据访问

    目录 前言 SpringBoot整合MyBatis 环境搭建 注解方式整合mybatis 使用xml配置Mybatis 整合Redis 接口整合 测试 总结 前言 在开发中我们通常会对数据库的数据进行操作,SpringBoot对关系性和非关系型数据库的访问操作都提供了非常好的整合支持.SpringData是spring提供的一个用于简化数据库访问.支持云服务的开源框架.它是一个伞状项目,包含大量关系型和非关系型数据库数据访问解决方案,让我们快速简单的使用各种数据访问技术,springboot默认

  • 使用Pyinstaller的最新踩坑实战记录

    前言 将py编译成可执行文件需要使用PyInstaller,之前给大家介绍了关于利用PyInstaller将python程序.py转为.exe的方法,在开始本文之前推荐大家可以先看下这篇文章,本文主要给大家介绍了Pyinstaller最新踩坑实战记录,现在网上关于pyinstaller的问题充斥着各种copy过来copy过去的答案,这大概就是各种无脑博客爬虫站最让人讨厌的地方. 而且这方面的问题,stackoverflow也是回答的千奇百怪. 强烈推荐官方文档 http://pythonhost

  • Bootstrap-table自定义可编辑每页显示记录数

    写在前面: 最近在做的person功能,由于后期系统中person人数较多,不利用查找person,故需求方将要求可以自己编辑每页显示的数目,而不是固定的写死每页显示的数目. 下面先来看下bootsrap-table自带的可切换每页显示记录数的图片 其实我感觉自带的这个下拉框选择每页显示的记录数,已经很方便啦,只需要给几个值就可以了,但是为了更加人性化与方便,就要改的呢,初步想的是,直接将此处的下拉框改为一个input输入框就可以了.事实上,最后也是这么做的. 下面先大概说一下改造的思路吧.对于

  • Redis主从配置和底层实现原理解析(实战记录)

    我们使用Redis的时候往往都是主从模式或者集群架构,不会使用单台Redis服务. 一.Redis主从配置实战 我们使用master节点写输入,然后将数据同步到slave节点,从节点可以提供读取或者备份的功能,分担master节点压力. redis主从架构搭建,配置从节点步骤 1. 复制一份redis.conf文件为redis-6380.conf cp ./redis.conf ./conf/redis-6380.conf 2.打开redis-6380.conf配置文件,将相关配置修改为如下值:

  • C#多线程开发实战记录之线程基础

    目录 前言 线程基础 1.创建线程 2.暂停线程 3.线程等待 4.线程终止 C#中的lock关键字 总结 前言 最近由于工作的需要,一直在使用C#的多线程进行开发,其中也遇到了很多问题,但也都解决了.后来发觉自己对于线程的知识和运用不是很熟悉,所以将利用几篇文章来系统性的学习汇总下C#中的多线程开发. 线程基础 "进程是操作系统分配资源的最小单元,线程是操作系统调度的最小单元" 这句话应该学习计算机的朋友或多或少都听说过,这在操作系统这门课中是很重要的一个概念. 在操作系统中可以同时

  • Vue实战记录之登陆页面的实现

    目录 1 前期准备 1.1 安装Node.js 1.2 安装webpack 1.3 安装vue-cli 2 搭建Vue项目 2.1 创建项目 2.2 项目目录 2.3 导入Element UI 3 实现登陆页面 3.1 修改App.vue 3.2 创建Login.vue 3.3 配置路由 4 实现登陆功能 4.1 导入axios 4.2 导入qs和Mock 4.3 编写提交js 4.4 编写Mock测试数据 总结 1 前期准备 1.1 安装Node.js 官网下载地址:https://nodej

  • matplotlib实现自定义散点形状marker的3种方法

    目录 无填充形状和填充形状 Tex形状 Path对象 使用Path模块中的Path对象 自定义Path对象 从svg格式转化为Path对象 参考 matplotlib中marker支持的数据类型 marker有4种类型,分别是: Unfilled markers: 无填充形状 Filled markers: 填充形状 markers created from Tex symbols: 即用tex字符串定义的形状 created from paths:自定义的matplotlib中的Path对象即

随机推荐