c# WindowsForm上使用Panel制作画板的一些小功能
清空画板:
private void BtnReset_Click(object sender, EventArgs e)
{
graphics.Clear(pnlPanel.BackColor);
clrdColorDialog.Reset();
btnKleur.BackColor = default(Color);
}
选择颜色:
private void BtnColor_Click(object sender, EventArgs e)
{
clrdColorDialog.ShowDialog();
Color clrChose = clrdColorDialog.Color;
pen = new Pen(clrChose,5);
btnColor.BackColor = clrChose;
}
按鼠标左键画画(根据不同画笔):
private void PnlPanel_MouseMove(object sender, MouseEventArgs e)
{
//检查是否选择颜色
if (e.Button == MouseButtons.Left)
{
if (pen == null)
{
MessageBox.Show("请选择一个颜色。");
return;
}
}
//根据不同画笔链接不同Class
switch (cmbPaint.SelectedIndex)
{
case 0:
paint = new Line(graphics, pen);
break;
case 1:
paint = new Ball(graphics, pen);
break;
case 2:
paint = new Square(graphics, pen);
break;
default:
paint = new Line(graphics, pen);
break;
}
//没有选择画笔类型则无事发生
if (cmbKwast.SelectedIndex == -1) return;
//按鼠标左键画画
if(e.Button == MouseButtons.Left)
{
if (cmbPaint.SelectedItem != null)
{
paint.Draw(e.Location);
label1.Text = e.Location.ToString(); //显示位置
}
}
}
前提条件:
private Graphics graphics;
private Pen pen;
Paint paint; //此为一个新建Class
public Form1()
{
InitializeComponent();
graphics = pnlPanel.CreateGraphics();
}
Paint Class代码:
public abstract class Paint
{
public Graphics _graphics { get; set; }
public Pen _pen { get; set; }
public Paint(Graphics graphics, Pen pen)
{
_graphics = graphics;
_pen = pen;
}
public abstract void Draw(Point p);
}
例子:画笔类型:由圆组成:
namespace 画画小程序
{
public class Ball : Paint
{
public Ball(Graphics graphics, Pen pen) : base(graphics, pen)
{
}
public override void Draw(Point p)
{
Brush brush = _pen.Brush;
_graphics.FillEllipse(brush, p.X, p.Y, 10, 10);
}
}
}
或者方块:
public class Square : Paint
{
public Square(Graphics graphics, Pen pen): base(graphics,pen)
{
}
public override void Draw(Point p)
{
Brush brush = _pen.Brush;
_graphics.FillRectangle(brush,p.X,p.Y, 10, 10);
}
}
或者斜线:
public class Line : Paint
{
public Line(Graphics graphics, Pen pen):base(graphics,pen)
{
}
public override void Draw(Point p)
{
_graphics.DrawLine(_pen, new Point(p.X, p.Y), new Point(p.X + 10, p.Y - 10));
}
}
c# WindowsForm上使用Panel制作画板的一些小功能相关推荐
- canvas制作画板
canvas画板的制作 今天想给大家分享下canvas教程,有制作画板的源代码,html,css,javascript,图片素材在下面,快去体验下!!!喜欢伙伴记得关注哦,想要其他源代码记得在评论说下 ...
- 如何使用EPLAN PRO PANEL 制作部件-带3D接线部分
如何使用EPLAN PRO PANEL 制作部件-带3D接线部分 声明 使用 EPLAN Pro panel 软件需准备的条件 1.创建原理图部分 2.将3D图导入为"宏" 3.修 ...
- Windows上使用gitbook制作电子书
0. 前言 第一次在windows上使用gitbook制作电子书,在网上搜了好多资料,自己亲手试了下并整理如下. 1. 准备工具 Step1: 下载nodejs(nodejs中文官方): http:/ ...
- Moho Pro - Mac 上一款专业的二维动画制作软件,强大的功能让你尽情发挥创意
Moho Pro - Mac 上一款专业的二维动画制作软件,强大的功能让你尽情发挥创意 Moho,以前被称为动画工作室专业版,是最好的质量的2D动画软件之一.这个程序是理想的专业人士寻找一个更有效的替 ...
- python使用matplotlib制作画板和轴
[高心星出品] 文章目录 前言 一.安装matplotlib库 二.使用matploatlib制作画板和轴 1.引入库 2.创建画板和轴 总结 前言 Matplotlib 是 Python 的绘图库. ...
- 原来AE还能上云渲染制作,再也不怕效率慢了
Adobe After Effects(简称为AE)是Adobe公司推出的一款图形视频处理软件,适用于从事设计和视频特技的机构,包括电视台.动画制作公司.个人后期制作工作室以及多媒体工作室.属于层类型 ...
- 怎样一键上传照片制作电子杂志?
在数字化时代,电子杂志成为了一种越来越受欢迎的出版方式.相比传统的纸质杂志,电子杂志具有更加便捷.环保和互动性强的特点.但是,对于许多新手来说,制作电子杂志可能仍然是一件比较困难的事情.本文将介绍一种 ...
- Unity制作随机数字抽奖小案例
Unity制作随机数字抽奖小案例 1. 搭建 UI 界面 2. 实现思路 2-1. 创建 RandomNumber 类 [挂载在每个抽奖格子(Numbers下面的Image)] 2-2. 创建 Sta ...
- WPF制作的一个小功能,智能提示(IntelliSense)
WPF制作的一个小功能,智能提示(IntelliSense) 原文 http://www.cnblogs.com/scheshan/archive/2012/06/30/2570867.html 最近 ...
- pb程序怎么发布到iis_怎么使用抖音小程序第三方平台系统开发制作发布抖音小程序+教程...
怎么使用抖音小程序第三方平台系统开发制作发布抖音小程序+教程 抖音短视频APP发布<2019年抖音数据报告>显示,其日活跃用户已经于2020年1月达到4亿,抖音APP受到广大用户追捧的同时 ...
最新文章
- JAVA实现在数据不匹配时把数据写到文件中
- sqlite工具类 java_Java之泛型、集合工具类
- C#如何释放已经加载的图片 (转)
- Java中的几种对象(PO、VO、DAO、BO、POJO)
- 如何修改Qt Creator的界面语言
- 99个wordpress经典插件
- SQL:postgresql查询结果加一个自定义的列
- python注册大漠插件,大漠插件安装包
- 十大排序算法总结与实现
- “死机短信”缠上山寨手机 往下翻就死机黑屏
- SG3525matlab,基于SG3525的BOOST变换器
- 体胖还需勤跑步,人丑就该多读书!
- AMS1117稳压芯片介绍
- c++合理利用adl来重载概念
- 2017东北四省赛G题
- 如何应对 DDoS 勒索攻击?
- 百度图像识别API调用(python)
- VIM源生linux代码编辑器使用
- 912 计算机考研专业课,2019清华大学计算机考研912考试教材如何选择?
- 民安汇智量表科普!满意度调查量表怎么选?
热门文章
- DOM事件+正则表达式
- 拓嘉辰丰:把握活动规则,玩转拼多多万人团
- mysql服务重启后不见了_Win10更新后,MySQL服务莫名消失的问题
- R语言使用sort函数对日期向量数据进行排序、默认从小到大升序排序、设置decreasing参数为真进行降序排序
- mysql 统计七日留存率_1.七日留存率-SQL实现
- 利用“串口调试助手”等软件调试 PROTEUS 环境中 51单片机 的串行通信
- 生物识别设备有问题_有您数据的生物识别
- vue 之手机号验证、正则验证手机号是否正确、手机号验证码信息弹窗
- 改造摄像头模块成开发板
- Caused by: org.apache.thrift.TApplicationException: Required field ‘filesAdded‘ is unset