wpf简单的绘图板
xaml:
<Window x:Class="WpfApplication1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Title="MainWindow" Height="418" Width="525">
<DockPanel LastChildFill="True">
<StackPanel MinWidth="100" DockPanel.Dock="Left">
<TextBlock HorizontalAlignment="Center">editing mode</TextBlock>
<Button x:Name="btnselection" Margin="5" Click="btnselection_Click">selection</Button>
<Button x:Name="btndraw" Margin="5" Click="btndraw_Click">draw</Button>
<Button x:Name="btnerase" Margin="5" Click="btnerase_Click">erase</Button> <TextBlock HorizontalAlignment="Center">choss color:</TextBlock>
<Ellipse x:Name="rectred" Fill="Red" MinHeight="50" Margin="5" MouseDown="rectred_MouseDown"></Ellipse>
<Ellipse x:Name="rectgreen" Fill="Green" MinHeight="50" Margin="5" MouseDown="rectgreen_MouseDown"></Ellipse>
<Ellipse x:Name="rectblue" Fill="Blue" MinHeight="50" Margin="5" MouseDown="rectblue_MouseDown"></Ellipse>
<Ellipse x:Name="rectyellow" Fill="Yellow" MinHeight="50" Margin="5"></Ellipse>
</StackPanel>
<InkCanvas x:Name="inkcanvas1" EditingMode="Ink" ClipToBounds="True"> </InkCanvas>
</DockPanel>
</Window>
后台:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes; namespace WpfApplication1
{
/// <summary>
/// MainWindow.xaml 的交互逻辑
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent(); } private void btnerase_Click(object sender, RoutedEventArgs e)
{
inkcanvas1.EditingMode = System.Windows.Controls.InkCanvasEditingMode.EraseByPoint;
} private void rectred_MouseDown(object sender, MouseButtonEventArgs e)
{
inkcanvas1.DefaultDrawingAttributes.Color = System.Windows.Media.Colors.Red;
} private void btndraw_Click(object sender, RoutedEventArgs e)
{
inkcanvas1.EditingMode = System.Windows.Controls.InkCanvasEditingMode.Ink;
} private void rectgreen_MouseDown(object sender, MouseButtonEventArgs e)
{
inkcanvas1.DefaultDrawingAttributes.Color = System.Windows.Media.Colors.Green;
} private void rectblue_MouseDown(object sender, MouseButtonEventArgs e)
{
inkcanvas1.DefaultDrawingAttributes.Color = System.Windows.Media.Colors.Blue;
} private void rectyellow_MouseDown(object sender, MouseButtonEventArgs e)
{
inkcanvas1.DefaultDrawingAttributes.Color = System.Windows.Media.Colors.Yellow;
;
} private void btnselection_Click(object sender, RoutedEventArgs e)
{
inkcanvas1.EditingMode = System.Windows.Controls.InkCanvasEditingMode.Select;
} }
}
效果:
wpf简单的绘图板的更多相关文章
- Windows Phone开发(21):做一个简单的绘图板
原文:Windows Phone开发(21):做一个简单的绘图板 其实我们今天要说的就是一个控件--InkPresenter,这个控件并不是十分强大,没办法和WPF中的InkCanvas相比,估计在实 ...
- WPF简单入门总结
WPF简单总结 最近看了点关于WPF的东西,总结了点点入门的东西. XAML语法基础 1. 定义样式 <Window.Resources><!--窗体资源的定义--> < ...
- wpf 导出Excel Wpf Button 样式 wpf简单进度条 List泛型集合对象排序 C#集合
wpf 导出Excel 1 private void Button_Click_1(object sender, RoutedEventArgs e) 2 { 3 4 ExportDataGrid ...
- .NET CORE(C#) WPF简单菜单MVVM绑定
微信公众号:Dotnet9,网站:Dotnet9,问题或建议:请网站留言, 如果对您有所帮助:欢迎赞赏. .NET CORE(C#) WPF简单菜单MVVM绑定 阅读导航 本文背景 代码实现 本文参考 ...
- WPF简单导航框架(Window与Page互相调用)
相当多的WPF程序都有着丰富的页面和功能,如何使程序在不同页面间转换并降低资源占用,选择适合自己的导航框架就很重要了.最近花了一点时间做了一个简单的导航框架,并在这个过程中对Window.Page.U ...
- WPF简单布局 浅尝辄止
WPF的窗口只能包含一个元素,为了在WPF窗口中放置多个元素并创建更实用的用户界面,需要在窗口上放置一个容器,然后在容器中放置其它元素. 注意:造成这一限制的原因是window类继承自 ...
- Wpf 简单制作自己的窗体样式(2)
上一篇blog讲了制作简单的样式的窗体,对于一个传统的窗体,不仅仅可以拖动,和关闭操作.还具有最大化.最小化.隐藏,以及改变窗体的大小等.这篇blog就是对上篇的补充,完善窗体的改变大小和最大化最小化 ...
- Wpf 简单制作自己的窗体样式
最近一直在搞wpf相关的东东,由于还在门外徘徊,所以第一篇blog写了简单的制作扁平化的wpf button样式,这一篇也简单的制作属于自己wpf 窗体的样式. 废话少说,下面就开始制作自己的窗体样式 ...
- WPF简单的数据库查询
做一个简单WPF连接数据库的 控件类型和名称:DataGrid:dataGrid Button1 :Button1 Button: Button2 ...
随机推荐
- Laravel 中自定义日志目录
参考:https://laravel-china.org/articles/7125/custom-log-directory-in-laravel
- Photon3Unity3D.dll 解析一
IPhotonPeerListener Photon客户端回调接口 1: //只要有来自Photon Server的事件就触发 2: public virtual void OnEvent( Eve ...
- 终止函数 atexit()
函数名: atexit 头文件:#include<stdlib.h> 功 能: 注册终止函数(即main执行结束后调用的函数) 用 法: int atexit(void (*f ...
- python 面试
知识总结 面试(一)
- 关于语义化版本(semantic versioning or SemVer)
1 为什么要有SemVer? SemVer用来规范组件之间的依赖版本,它使用一个版本号来传递出组件的API的变化情况. 在理解这规范之后,看一眼依赖包的版本号,就知道API的变化(兼容性)程度,方便 ...
- Codeforces Round #496 (Div. 3) F - Berland and the Shortest Paths
F - Berland and the Shortest Paths 思路:还是很好想的,处理出来最短路径图,然后搜k个就好啦. #include<bits/stdc++.h> #defi ...
- 【Java】if判断boolean类型
public class Test { public static void main(String[] args) { boolean i=false; boolean j=true; if(i=j ...
- XV6操作系统代码阅读心得(二):进程
1. 进程的基本概念 从抽象的意义来说,进程是指一个正在运行的程序的实例,而线程是一个CPU指令执行流的最小单位.进程是操作系统资源分配的最小单位,线程是操作系统中调度的最小单位.从实现的角度上讲,X ...
- 【JAVAWEB学习笔记】11_XML
今日内容介绍 编写服务器软件,访问指定配置内容 访问tomcat下已经发布的web项目 今日内容学习目标 可以编写xml存放任意内容 通过DTD约束编写指定格式的XML 通过Schema约束编写指定格 ...
- U2随笔
Html 结构化 CSS 样式 JavaScript 行为交互 1.JavaScript基础 2.JavaScript操作BOM对象 3.JavaScript操作DOM对象***** 4.JavaSc ...