zoukankan      html  css  js  c++  java
  • 如何用blend创建自定义窗口

    1 意义

           我们默认创建的窗口样式如下,时常会觉得这窗口太老套,从WINDOWS   98开始就这样,能不能做点改变?

           答案是肯定的,下面就介绍如何创建自己的任意形状的窗口;

    2 原理

           在窗口上面绘制一个闭合图形(圆、path、图片、矩形等),然后设置WindowStyle为none,设置AlowsTransparency为true,这样可以去掉原有风格的最大化最小化、边框、title等元素,得到一个只能看到我们的闭合图形的窗口,再在上面重写最大化、最小化、关闭、拖动等函数即可;

    3 实现步骤

    3.1 新建工程

           新建工程如下图设置;

    3.2 设置窗体对象属性

           在对象和时间栏选择window窗体对象,属性栏将会自动显示窗体的相关属性,找到外观栏展开勾选AlowsTransparency属性,设置windowStyle为none;

    3.3 插入闭合图形

           这里笔者使用两个圆,在实际可使用path、矩形或者插入一张图片都可;调整其背景色;在对象和时间栏选中windows对象,设置其background的alpha值为0。

           现在得出效果如下,这也就是自定义窗口的雏形了:

    3.4 添加功能函数

           添加最大化、最小化、和关闭按钮(注意笔者在这里添加的是自定义的按钮),并为其添加click响应,选中对应按钮,属性面板中选中属性选项卡,点击 事件图标,添加click事件;

    private void clickWinClose(object sender, System.Windows.RoutedEventArgs e)

    {

        // 在此处添加事件处理程序实现。

        this.Close();

    }

     

    private void clickWinMax(object sender, System.Windows.RoutedEventArgs e)

    {

        // 在此处添加事件处理程序实现。

        this.WindowState = WindowState.Maximized;

    }

    private void clickWinMin(object sender, System.Windows.RoutedEventArgs e)

    {

                // 在此处添加事件处理程序实现。

        this.WindowState = WindowState.Minimized;

    }

    到此基本完成了自定义窗口了,运行效果如下:

    3.5 补充说明

           由于笔者没什么美感,所以做出来的窗口丑陋,大家可以自己做出更多漂亮的窗口,特别是用图片。此外大家还可以加上还原按钮、窗体的拖动等功能。

           第一次在博客上写篇像样的文章,希望能对大家有用,另外如果有什么错误的地方,请大家指出,不胜感激!

    作者:家乡的萝卜

    QQ:309284701

  • 相关阅读:
    连通域搜索
    识别深色浅色
    新年,博客搬家了!!!
    C++11 —— 使用 thread 实现线程池
    自己实现的网络字节序转换函数
    GUI 编程 —— QT 的 QSlider 鼠标点击定位问题
    单生产者/单消费者 的 FIFO 无锁队列
    用模板类特化的方式实现工厂模式
    C++11 —— 简易的旋转锁类
    C++11 —— 获取 tuple 参数列表中指定数据类型的索引位置
  • 原文地址:https://www.cnblogs.com/qiujiahong/p/2388791.html
Copyright © 2011-2022 走看看