InkPicture 控件使用_01
private System.ComponentModel.Container components = null;
private Microsoft.Ink.InkOverlay m_InkOverlay;
private System.Windows.Forms.GroupBox groupBox1;
private System.Windows.Forms.RadioButton InkIt;
private System.Windows.Forms.RadioButton DelIt;
private System.Windows.Forms.RadioButton SelectIt;
private System.Windows.Forms.RadioButton PointErase;
private enum InkDrawStateEnum {Ink,Select,Delete,PointErase};
private int InkDrawState = (int) InkDrawStateEnum.Ink;
private Button btnSave;
private PictureBox pictureBox1;
Microsoft.Ink.InkCollector theInkCollector;
public Form1()
{
InitializeComponent(); // Instantiate the InkOverlay.
m_InkOverlay = new Microsoft.Ink.InkOverlay(this.Handle);
m_InkOverlay.Enabled = true;
// Hook up the InkOverlay object's Stroke event handler.
m_InkOverlay.Stroke += new InkCollectorStrokeEventHandler( InkStrokeAdded ); // Hook up to the InkOverlay object's Painted event handler. m_InkOverlay.Painted += new InkOverlayPaintedEventHandler(InkPainted);
}
private void InkStrokeAdded( object sender, InkCollectorStrokeEventArgs e)
{
// Invalidate the form so we can force a repaint.
this.Invalidate();
}
private void InkPainted( object sender, PaintEventArgs e)
{
// Call the helper function which will redraw the form.
RendererEx.DrawStrokeIds(e.Graphics, Font, m_InkOverlay.Ink);
}
protected override void Dispose( bool disposing )
{
if( disposing )
{
if (components != null)
{
components.Dispose();
}
}
base.Dispose( disposing );
}
private void InitializeComponent()
{
this.groupBox1 = new System.Windows.Forms.GroupBox();
this.btnSave = new System.Windows.Forms.Button();
this.PointErase = new System.Windows.Forms.RadioButton();
this.SelectIt = new System.Windows.Forms.RadioButton();
this.DelIt = new System.Windows.Forms.RadioButton();
this.InkIt = new System.Windows.Forms.RadioButton();
this.pictureBox1 = new System.Windows.Forms.PictureBox();
this.groupBox1.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).BeginInit();
this.SuspendLayout();
this.groupBox1.Controls.Add(this.btnSave);
this.groupBox1.Controls.Add(this.PointErase);
this.groupBox1.Controls.Add(this.SelectIt);
this.groupBox1.Controls.Add(this.DelIt);
this.groupBox1.Controls.Add(this.InkIt);
this.groupBox1.Dock = System.Windows.Forms.DockStyle.Bottom;
this.groupBox1.Location = new System.Drawing.Point(0, 278);
this.groupBox1.Name = "groupBox1";
this.groupBox1.Size = new System.Drawing.Size(458, 45);
this.groupBox1.TabIndex = 0;
this.groupBox1.TabStop = false;
this.btnSave.Location = new System.Drawing.Point(371, 16);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(75, 23);
this.btnSave.TabIndex = 4;
this.btnSave.Text = "Save";
this.btnSave.UseVisualStyleBackColor = true;
this.btnSave.Click += new System.EventHandler(this.btnSave_Click);
this.PointErase.Location = new System.Drawing.Point(272, 15);
this.PointErase.Name = "PointErase";
this.PointErase.Size = new System.Drawing.Size(96, 22);
this.PointErase.TabIndex = 3;
this.PointErase.Text = "Point Erase";
this.PointErase.CheckedChanged += new System.EventHandler(this.PointErase_CheckedChanged);
this.SelectIt.Location = new System.Drawing.Point(80, 15);
this.SelectIt.Name = "SelectIt";
this.SelectIt.Size = new System.Drawing.Size(80, 22);
this.SelectIt.TabIndex = 2;
this.SelectIt.Text = "Select";
this.SelectIt.CheckedChanged += new System.EventHandler(this.SelectIt_CheckedChanged);
this.DelIt.Location = new System.Drawing.Point(184, 15);
this.DelIt.Name = "DelIt";
this.DelIt.Size = new System.Drawing.Size(64, 22);
this.DelIt.TabIndex = 1;
this.DelIt.Text = "Delete";
this.DelIt.CheckedChanged += new System.EventHandler(this.DelIt_CheckedChanged);
this.InkIt.Checked = true;
this.InkIt.Location = new System.Drawing.Point(8, 15);
this.InkIt.Name = "InkIt";
this.InkIt.Size = new System.Drawing.Size(56, 22);
this.InkIt.TabIndex = 0;
this.InkIt.TabStop = true;
this.InkIt.Text = "Ink";
this.InkIt.CheckedChanged += new System.EventHandler(this.InkIt_CheckedChanged);
this.pictureBox1.Location = new System.Drawing.Point(248, 26);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(198, 246);
this.pictureBox1.TabIndex = 1;
this.pictureBox1.TabStop = false;
this.AutoScaleBaseSize = new System.Drawing.Size(6, 14);
this.ClientSize = new System.Drawing.Size(458, 323);
this.Controls.Add(this.pictureBox1);
this.Controls.Add(this.groupBox1);
this.Name = "Form1";
this.Text = "StrokeViewer";
this.groupBox1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
this.ResumeLayout(false);
}
[STAThread]
static void Main()
{
Application.Run(new Form1());
}
private void InkIt_CheckedChanged(object sender, System.EventArgs e)
{
InkDrawState = (int) InkDrawStateEnum.Ink;
m_InkOverlay.EditingMode = InkOverlayEditingMode.Ink;
}
private void SelectIt_CheckedChanged(object sender, System.EventArgs e)
{
InkDrawState = (int) InkDrawStateEnum.Select;
m_InkOverlay.EditingMode = InkOverlayEditingMode.Select;
}
private void DelIt_CheckedChanged(object sender, System.EventArgs e)
{
InkDrawState = (int) InkDrawStateEnum.Delete;
m_InkOverlay.EditingMode = InkOverlayEditingMode.Delete;
m_InkOverlay.EraserMode = InkOverlayEraserMode.StrokeErase;
}
private void PointErase_CheckedChanged(object sender, System.EventArgs e)
{
InkDrawState = (int) InkDrawStateEnum.PointErase;
m_InkOverlay.EditingMode = InkOverlayEditingMode.Delete;
m_InkOverlay.EraserMode = InkOverlayEraserMode.PointErase;
}
private void btnSave_Click(object sender, EventArgs e)
{
SaveFileDialog sfd = new SaveFileDialog();
sfd.Filter = "(*.*)|*.gif";
if (sfd.ShowDialog() == DialogResult.OK)
{
FileStream gifFile;
byte[] fortifiedGif = null;
gifFile = File.OpenWrite(sfd.FileName);
fortifiedGif = m_InkOverlay.Ink.Save(PersistenceFormat.Gif);
gifFile.Write(fortifiedGif, 0, fortifiedGif.Length);
gifFile.Close();
}
}
InkPicture 控件使用_01的更多相关文章
- JS调用Android、Ios原生控件
在上一篇博客中已经和大家聊了,关于JS与Android.Ios原生控件之间相互通信的详细代码实现,今天我们一起聊一下JS调用Android.Ios通信的相同点和不同点,以便帮助我们在进行混合式开发时, ...
- HTML5 progress和meter控件
在HTML5中,新增了progress和meter控件.progress控件为进度条控件,可表示任务的进度,如Windows系统中软件的安装.文件的复制等场景的进度.meter控件为计量条控件,表示某 ...
- 百度 flash html5自切换 多文件异步上传控件webuploader基本用法
双核浏览器下在chrome内核中使用uploadify总有302问题,也不知道如何修复,之所以喜欢360浏览器是因为帮客户控制渲染内核: 若页面需默认用极速核,增加标签:<meta name=& ...
- JS与APP原生控件交互
"热更新"."热部署"相信对于混合式开发的童鞋一定不陌生,那么APP怎么避免每次升级都要在APP应用商店发布呢?这里就用到了混合式开发的概念,对于电商网站尤其显 ...
- UWP开发必备:常用数据列表控件汇总比较
今天是想通过实例将UWP开发常用的数据列表做汇总比较,作为以后项目开发参考.UWP开发必备知识点总结请参照[UWP开发必备以及常用知识点总结]. 本次主要讨论以下控件: GridView:用于显示数据 ...
- 【踩坑速记】开源日历控件,顺便全面解析开源库打包发布到Bintray/Jcenter全过程(新),让开源更简单~
一.写在前面 自使用android studio开始,就被它独特的依赖方式:compile 'com.android.support:appcompat-v7:25.0.1'所深深吸引,自从有了它,麻 ...
- 对百度WebUploader开源上传控件的二次封装,精简前端代码(两句代码搞定上传)
前言 首先声明一下,我这个是对WebUploader开源上传控件的二次封装,底层还是WebUploader实现的,只是为了更简洁的使用他而已. 下面先介绍一下WebUploader 简介: WebUp ...
- Windows API 设置窗口下控件Enable属性
参考页面: http://www.yuanjiaocheng.net/webapi/create-crud-api-1-put.html http://www.yuanjiaocheng.net/we ...
- VB.NET设置控件和窗体的显示级别
前言:在用VB.NET开发射频检测系统ADS时,当激活已存在的目标MDI子窗体时,被其他子窗体遮住了,导致目标MDI子窗体不能显示. 这个问题怎么解决呢?网上看到一篇帖子VB.NET设置控件和窗体的显 ...
随机推荐
- vue相关
勾三股四的vue+webpack实战:http://jiongks.name/blog/just... 用Vue构建一个Notes App:https://coligo.io/learn-vuex-. ...
- 手动建立数据库连接的BaseDAO
package com.chinasoft.julong.dao; import java.sql.Connection; import java.sql.DriverManager; import ...
- pycharm的使用技巧
本文将持续更新一些关于在使用pycharm的过程中的小技巧: 多行缩进/取消缩进 选中需要更改的代码,按 shift + tab 多行注释/取消注释 选中需要更改的代码,按 ctrl + / 滚轮 ...
- 建立树莓派raspberry交叉编译环境以及编译内核
最近买了一个树莓派,玩了几天,虽然已经有很多人玩了,现在玩好像有点晚了,但是他确实是个好东西,学好它,对嵌入式的整个开发流程也就会熟悉很多.虽然性能不是很强和现在的BB-BLACK比有点慢了,但是它便 ...
- Asp.net Mvc 自定义Session (一),
大家都知道用系统默认的session 会存在这样的问题 如果用户过多的话 session 会自动消亡,而且不能支持分布式和集群. 这系列博客主要讲解 怎样 解决用户过多的session自动消亡,和分 ...
- 最火的Android开源项目(完结篇)
65. AndroidSideMenu AndroidSideMenu能够让你轻而易举地创建侧滑菜单.需要注意的是,该项目自身并不提供任何创建菜单的工具,因此,开发者可以自由创建内部菜单. 66. A ...
- js 数组详解(javascript array)
Array Array 对象用于在单个的变量中存储多个值. 构造函数: 1) new Array(); 2) new Array(size); 3) new Array(element0, ...
- [HTTPS] MAN IN THE MIDDLE (MITM)
If you go a public caffee shop, they have free wifi. How could you make sure your infomration cannot ...
- textLayout_1.0.0.595.swz
使用ai制作的矢量素材,导出到flash里面.生成swf时.有的时候会多一个textLayout_1.0.0.595.swz的文件. 这会导致导出的swf无法加载使用.会显示不出来. 解决办法是: 检 ...
- ecto注册码
First name: Good Last name: Life Serial: ecto_at585-RP00-MP3F-VB8R-L82N-N0CC First Name: The Last ...