C#中WPF颜色对话框控件的实现

在 C# WPF开发中颜色对话框控件(ColorDialog)用于对界面中的背景、文字…(拥有颜色属性的所有控件)设置颜色,例如设置标签控件的背景色。

颜色对话框的运行效果如下图所示:

标签背景色设置后如下:

xml代码:

<Window x:Class="WpfApp.MainWindow"
        xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
        xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
        xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
        xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
        xmlns:local="clr-namespace:WpfApp"
        Icon="https://demosc.chinaz.net/Files/pic/iconsico/8254/e9.ico"
        mc:Ignorable="d"
        Title="TestImage" Height="600" Width="900" WindowStartupLocation="CenterScreen">
    <Window.Resources>
        <ResourceDictionary x:Uid="CommandDict">
            <RoutedCommand x:Uid="SetBackGround" x:Key="SetBackGround"/>
        </ResourceDictionary>
    </Window.Resources>

    <Window.CommandBindings>
        <CommandBinding x:Uid="SetBackGroundParameter" Command="{StaticResource SetBackGround}" Executed="Pic_BackGround_Click" />
    </Window.CommandBindings>

    <Window.InputBindings>
        <KeyBinding x:Uid="AddKeyBinding" Key="O" Modifiers="Ctrl+Shift" Command="{StaticResource SetBackGround}"/>
    </Window.InputBindings>
    <Grid>
        <DockPanel x:Name="myDockPanel">
            <Menu DockPanel.Dock="Top" Height="30" Margin="0,0,0.333,0" VerticalAlignment="Top" HorizontalAlignment="Left">
                <MenuItem Header="文件"  Height="30" Background="Violet">
                    <MenuItem Header="打开" InputGestureText="Ctrl+0">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/7595/j14.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="保存" InputGestureText="Ctrl+S">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/7595/j13.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="另存为" InputGestureText="F12">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/7595/j12.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <Separator/>
                    <MenuItem Header="打印预览">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/7595/j11.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="打印" InputGestureText="Ctrl+P">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/7595/j10.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="退出" InputGestureText="F4">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/7595/j9.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                </MenuItem>
                <MenuItem Header="编辑" Height="30" Background="Aqua">
                    <MenuItem Header="背景图片" InputGestureText="Ctrl + Shift + O" Click="Pic_BackGround_Click">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/8255/b8.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="恢复" InputGestureText="Ctrl+Y">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/8255/b1.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="重做" InputGestureText="Ctrl+Z">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/8255/b2.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <Separator/>
                    <MenuItem Header="复制" InputGestureText="Ctrl+C">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/8255/b4.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <MenuItem Header="粘贴" InputGestureText="Ctrl+V">
                        <MenuItem.Icon>
                            <Image Source="https://demosc.chinaz.net/Files/pic/iconsico/8255/b5.ico"/>
                        </MenuItem.Icon>
                    </MenuItem>
                    <Separator/>
                    <MenuItem Header="字体">
                        <MenuItem Header="黑体" InputGestureText="Ctrl+B" IsCheckable="True"/>
                        <MenuItem Header="斜体" InputGestureText="Ctrl+I" IsCheckable="True"/>
                        <Separator/>
                        <MenuItem Header="增大字体" IsCheckable="True"/>
                        <MenuItem Header="缩小字体" IsCheckable="True"/>
                    </MenuItem>
                </MenuItem>
            </Menu>
            <Label x:Name="colorLabel" DockPanel.Dock="Left" Width="200" Height="100" Background="AntiqueWhite" MouseDoubleClick="ColorLabel_MouseDoubleClick"></Label>
        </DockPanel>
    </Grid>
</Window>

c#代码:

using System;
using System.Windows;
using System.Windows.Media;
using System.Windows.Forms;
using System.Windows.Media.Imaging;
using System.Windows.Shapes;
using System.Windows.Controls;
using System.Windows.Forms;

namespace WpfApp
{
    /// <summary>
    /// MainWindow.xaml 的交互逻辑
    /// </summary>
    public partial class MainWindow : Window
    {
        public MainWindow()
        {
            InitializeComponent();
        }

        private void Pic_BackGround_Click(object sender, RoutedEventArgs e)
        {
            OpenFileDialog pic = new OpenFileDialog();
            pic.Title = "设置背景图片";
            pic.Filter = "图形文件(*.jpg)|*.jpg";
            if (pic.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                ImageBrush p = new ImageBrush(new BitmapImage(new Uri(pic.FileName, UriKind.Absolute)));
                Console.WriteLine(pic.FileName);
                myDockPanel.Background = p;
            }
        }

        private void ColorLabel_MouseDoubleClick(object sender, System.Windows.Input.MouseButtonEventArgs e)
        {
            ColorDialog cl = new ColorDialog();
            if(cl.ShowDialog() == System.Windows.Forms.DialogResult.OK)
            {
                colorLabel.Background = new SolidColorBrush(Color.FromArgb(cl.Color.A,cl.Color.R,cl.Color.G,cl.Color.B));
            }
        }
    }
}

到此这篇关于C#中WPF颜色对话框控件的实现的文章就介绍到这了,更多相关C# 颜色对话框控件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#开发Winform控件之打开文件对话框OpenFileDialog类

    OpenFileDialog类提供了用户打开文件的功能,它有如下属性: 属性 InitialDirectory:设置对话框的初始目录. Filter: 要在对话框中显示的文件筛选器,例如,"文本文件(*.txt)|*.txt|所有文件(*.*)||*.*". FilterIndex: 在对话框中选择的文件筛选器的索引,如果选第一项就设为1. RestoreDirectory: 控制对话框在关闭之前是否恢复当前目录. FileName:第一个在对话框中显示的文件或最后一个选取的文件. T

  • C#实现winform自动关闭MessageBox对话框的方法

    本文实例讲述了C#实现winform自动关闭MessageBox对话框的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; using System.Runtime.Inte

  • C#实现在前端网页弹出警告对话框(alert)的方法

    本文实例讲述了C#实现在前端网页弹出警告对话框(alert)的方法.分享给大家供大家参考.具体如下: 通常我们通过JS生成警告对话框,下面的代码可以帮助你在点击runat=server的按钮时从服务器端生成alert警告对话框 private void MessaegBox(String msg) { Page.Controls.Add(new LiteralControl("window.alert('"+msg+"')")); } protected void

  • C# 调用API函数弹出映射网络驱动器对话框问题

    1.基本知识介绍 首先,C#中的.net的常用对话框中没有映射网络驱动映射对话框,所以需要用windows的API函数去实现弹出映射网络驱动器对话框. c#调用API函数的要点可以参考:C#中调用Windows API的技术要点说明 值得注意到是,.net环境下参数类型的声明的不同: a.数值型直接用对应的就可.(DWORD -> int , WORD -> Int16)b.API中字符串指针类型 -> .net中stringc.API中句柄 (dWord)  -> .net中In

  • C#弹出对话框确定或者取消执行相应操作的实例代码

    一.基于WINFORM下的选择对话框 在WINFORM下,我们可以利用系统的对话框(MessageBox)来实现,具体思路是读取MessageBox的返回值(YES或NO)来达到对操作的控制.下面是一个演示程序代码代码如: private void button1_Click(object sender, System.EventArgs e) { label1.Text=""; DialogResult MsgBoxResult;//设置对话框的返回值 MsgBoxResult =

  • C#使用Word中的内置对话框实例

    本文实例讲述了C#使用Word中的内置对话框的方法,分享给大家供大家参考.具体实现方法如下: 使用 Microsoft Office Word 时,有时需要显示用户输入对话框.虽然可以创建自己的对话框,您也许还希望采用使用 Word 中内置对话框的方法,这些对话框在Application 对象的Dialogs 集合中公开.这使您能够访问 200 个以上的内置对话框,它们以枚举的形式表示. 适用于:本文中的信息适用于 Word 2013 和 Word 2010 的文档级项目和应用程序级项目.有关更

  • C#中WPF颜色对话框控件的实现

    在 C# WPF开发中颜色对话框控件(ColorDialog)用于对界面中的背景.文字…(拥有颜色属性的所有控件)设置颜色,例如设置标签控件的背景色. 颜色对话框的运行效果如下图所示: 标签背景色设置后如下: xml代码: <Window x:Class="WpfApp.MainWindow" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" xmlns:x="http

  • WPF的ListView控件自定义布局用法实例

    本文实例讲述了WPF的ListView控件自定义布局用法.分享给大家供大家参考,具体如下: 概要: 以源码的形式贴出,免得忘记后,再到网上查资料.在VS2008+SP1环境下调试通过 引用的GrayscaleEffect模块,可根据参考资料<Grayscale Effect...>中的位置下载. 正文: 如何布局是在App.xaml中定义源码如下 <Application x:Class="CWebsSynAssistant.App" xmlns="http

  • 超炫酷的WPF实现Loading控件效果

    Win8系统的Loading效果还是很不错的,网上也有人用CSS3等技术实现,研究了一下,并打算用WPF自定义一个Loading控件实现类似的效果,并可以让用户对Loading的颗粒(Particle)背景颜色进行自定义,话不多说,直接上代码: 1.用VS2012新建一个WPF的用户控件库项目WpfControlLibraryDemo,VS自动生成如下结构: 2.删除UserControl1.xaml,并新建一个Loading的CustomControl(不是UserControl),如下图所示

  • Python Tkinter对话框控件使用详解

    目录 文件选择对话框 颜色选择对话框 消息对话框 除了基本的控件之外,Tkinter 还提供了三种对话框控件: 文件选择对话框:filedailog 颜色选择对话框:colorchooser 消息对话框:messagebox 这些对话框的使用能够在一定程度上增强用户的交互体验,下面对这些对话框控件进行详细地介绍. 文件选择对话框 文件对话框在 GUI 程序中经常的使用到,比如上传文档需要从本地选择一个文件,包括文件的打开和保存功能都需要一个文件对话框来实现.Tkinter 提供文件对话框被封装在

  • ASP.NET中 TextBox 文本输入框控件的使用方法

    TextBox控件又称文本框控件,为用户提供输入文本的功能. 1.属性 TextBox控件的常用属性及说明如表1所示. 表1 TextBox控件常用属性及说明 属性 说明 AutoPostBack 获取或设置一个值,该值指示无论何时用户在TextBox控件中按〈Enter〉键或〈Tab〉键时,是否自动回发到服务器的操作 CausesValidation 获取或设置一个值,该值指示当TextBox控件设置为在回发发生时进行验证,是否执行验证 ID 控件ID Text 控件要显示的文本 TextMo

  • 自己使用js/jquery写的一个定制对话框控件

    最近在做一个游戏项目,项目里面很多需要用到对话框,而且得用上美工做的图片,这样的话好像就不好去找一些现成的对话框控件了,于是便琢磨着自己做一个通用的控件,虽然不是绝对通用啦,但在我这个项目里还是可以随意调用的,思想的话也可以借鉴到别的项目中. 先贴出主要代码: 复制代码 代码如下: //对话框的基本html内容,绝对定位,高宽设置,背景图片,标题,两个按钮图 var tdlz_dialog_content = "<div id='tdlz_dialog" + "' st

  • 总结Android中MD风格相关控件

    要使用MD风格控件,首先需要在Gradle中加入Support Design Library,例如: compile 'com.android.support:design:24.1.1' 一.CoordinatorLayout 1.CoordinatorLayout + AppBarLayout 布局文件代码如下: <android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.

  • Python GUI编程学习笔记之tkinter中messagebox、filedialog控件用法详解

    本文实例讲述了Python GUI编程学习笔记之tkinter中messagebox.filedialog控件用法.分享给大家供大家参考,具体如下: 相关内容: messagebox 介绍 使用 filedialog 介绍 使用 首发时间:2018-03-04 22:18 messagebox: 介绍:messagebox是tkinter中的消息框.对话框 使用: 导入模块:import tkinter.messagebox 选择消息框的模式: 提示消息框:[返回"ok"] tkint

  • c# 颜色选择控件的实现代码

    参考ColorComboBox做修改,并对颜色名做些修正,用于CR MVMixer产品中,聊作备忘~ 效果图: 代码: //颜色拾取框 using System; using System.ComponentModel; using System.Drawing; using System.Windows.Forms; namespace CRMVMixer { //event handler delegate public delegate void ColorChangedHandler(o

  • C# WPF开源UI控件库MaterialDesign介绍

    ## 学习平台 微软开发者博客: https://devblogs.microsoft.com/?WT.mc_id=DT-MVP-5003986 微软文档与学习: https://docs.microsoft.com/zh-cn/?WT.mc_id=DT-MVP-5003986 微软开发者平台: https://developer.microsoft.com/en-us/?WT.mc_id=DT-MVP-5003986 介绍 由于前段时间萌发开发一个基础架构得WPF框架得想法, 然后考虑到一些界

随机推荐