画多个矩形c语言,C# winform开发:Graphics、pictureBox同时画多个矩形
C#的System.Drawing 命名空间提供了对 GDI+ 基本图形功能的访问
重点在于获取Graphics对象,例如:
Graphics g = panel1.CreateGraphics
事实上CreateGraphics继承自Control, 即基本每一种控件都有这个方法
Control.CreateGraphics
在pannel、form上画图都一样,这里以pictureBox为例。DrawRectangle函数为例画矩形,其他形状不在这里考虑,自己尝试很简单
画圆是画椭圆,只需g.DrawEllipse后两个int参数width,height要设置相等,同时前两个int参数并不是圆心而是左上角的坐标,没有自带的circle函数只能自己封装
回到正题:
网上给的都是MouseDown MouseMove MouseUp Paint事件相关的代码,非常的简单。
using System.Drawing;
bool bDrawStart = false;
Point pointStart = Point.Empty;
Point pointContinue = Point.Empty;
private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
{
if (bDrawStart)
{
bDrawStart = false;
}
else
{
bDrawStart = true;
pointStart = e.Location;
}
}
private void pictureBox1_MouseMove(object sender, MouseEventArgs e)
{
if (bDrawStart)
{
pointContinue = e.Location;
Refresh();
}
}
private void pictureBox1_MouseUp(object sender, MouseEventArgs e)
{
if (bDrawStart)
{
dicPoints.Add(pointStart, pointContinue);
}
bDrawStart = false;
}
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
if (bDrawStart)
{
//实时的画矩形
Graphics g = e.Graphics;
g.DrawRectangle(pen, pointStart.X, pointStart.Y, pointContinue.X -pointStart.X, pointContinue.Y - pointStart.Y);
}
pen.Dispose();
}
用完就发现很明显的问题了,一次只能画一个图形
如何才能一次画多个呢?不少都说的重写Paint事件,override之类的函数,多麻烦。
试验修改Paint事件代码即可,定义一个字典表记录画过的矩形(根据对角两个点确定一个矩形,对应字典表的key, value,不考虑矩形相交重叠之类的情况),如下:
Dictionary dicPoints = new Dictionary();
private void pictureBox1_Paint(object sender, PaintEventArgs e)
{
System.Drawing.Pen pen = new System.Drawing.Pen(Color.LimeGreen);
pen.Width = ;
if (bDrawStart)
{
//实时的画矩形
Graphics g = e.Graphics;
g.DrawRectangle(pen, pointStart.X, pointStart.Y, pointContinue.X - pointStart.X, pointContinue.Y -pointStart.Y);
}
//实时的画之前已经画好的矩形
foreach (var item in dicPoints)
{
Point p1 = item.Key;
Point p2 = item.Value;
e.Graphics.DrawRectangle(pen, p1.X, p1.Y, p2.X - p1.X, p2.Y - p1.Y);
}
pen.Dispose();
}
【基于WinForm+Access局域网共享数据库的项目总结】之篇二:WinForm开发扇形图统计和Excel数据导出
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
【基于WinForm+Access局域网共享数据库的项目总结】之篇一:WinForm开发总体概述与技术实现
篇一:WinForm开发总体概述与技术实现 篇二:WinForm开发扇形图统计和Excel数据导出 篇三:Access远程连接数据库和窗体打包部署 [小记]:最近基于WinForm+Access数据库 ...
C# WinForm开发系列 - GDI+【转】
http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum=6&fps=1 C# WinForm开发系列 - GDI ...
使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
直接切入正题,这是我09年到11年左右业余时间编写的项目,最初的想法很简单,做一个能拖拖拽拽就直接生成应用程序的工具,不用写代码,把能想到的业务操作全部封装起来,通过配置的方式把这些业务操作组织起来运 ...
基于BindingSource的WinForm开发
BindingSource控件介绍 BindingSource控件介绍 BindingSource控件是.NET Framework 2.0提供的新控件之一.BindingSource控件与数据源建立 ...
Java进击C#——应用开发之WinForm开发
本章简言 上一章笔者介绍了关于WinForm环境.这一章笔者将继续讲WinForm.只不过更加的面向开发了.事实就是在学习工具箱里面的控件.对于WinForm开发来讲,企业对他的要求并没有那么高.但是 ...
WinForm开发-界面控件到实体,实体到界面控件自动绑定
在WinForm开发中,我们是不是为绑定界面控件的数据而每个控件每个控件的赋值?在保存修改时是不是也是每个控件每个控件的赋值到实体中?字段一多,那简直就是噩梦.有没有像Web中那样方便的方法直接就自动 ...
WPF与WinForm开发有什么区别?
转自http://hi.baidu.com/leoliu83/blog/item/1d1a4a66dcb41134aa184cfd.html WPF开发于WinForm之后,从技术发展的角度,WPF比 ...
在Winform开发中使用日程控件XtraScheduler(2)--深入理解数据的存储
在上篇随笔中介绍了DevExpress的XtraScheduler日程控件的各种使用知识点,对于我们来说,日程控件不陌生,如 ...
随机推荐
(转)CString截取字符串全攻略
附:去掉空格方法 CString str("e w r we 中华ADF 华AG中"); newstr=str.Replace(" ", "&quo ...
Elasticsearch 权威指南
Elasticsearch 权威指南 http://fuxiaopang.gitbooks.io/learnelasticsearch/content/index.html
VB.NET 注册表基本操作
''' ''' 注册表设置值 ''' '''
Vi 的基本使用
一.Vi入门 Unix 提供了全屏幕的Vi编辑器,这使我们的工作轻松不少.不少DOS用户抱怨Vi编辑器不象DOS下的编辑器如edit那么好用,这 是因为Vi考虑到各种用户的需要,没有使用某些通用的编 ...
QMessageBox
#include "dialog.h" #include "ui_dialog.h" #include Dialog::D ...
Java-->;利用URL类下载图片
--> 通过get 请求访问图片地址,将通过服务器响应的数据(即图片数据)存到本地文件中... --> HttpURLConnectionUtil 工具类 package com.drag ...
五、Spring ——单元测试
1.JUnit4 JUnit测试用例的完整生命周期要经历一下阶段:类级初始化资源处理,方法级初始化资源处理.执行测试用例中的方法.方法级销毁资源处理.类级销毁资源处理. 测试方法 @Test 初始化 ...
Android环境搭建要点
1.JDK环境变量配置 在环境变量的path变量中加入jdk安装目录的bin路径字符串(C:\Program Files\Java\jdk1.8.0\bin). 配置好后,在命令提示符界面输入&quo ...
PageControl(弹性滚动)
使用网上源码KYAnimatedPageControl self.pageControl = [[KYAnimatedPageControl alloc]initWithFrame:CGRec ...
学习红帽企业版RHEL 6.4的两问
(1)看了一晚上的RHEL 6.4,到现在也没分清楚服务器版和桌面版.都说两个版本是一个文件,那装上之后怎么判断这到底用的是服务器版还是桌面版?还有人说在安装过程中会要求选择,用虚拟机安装根本没看到有 ...
画多个矩形c语言,C# winform开发:Graphics、pictureBox同时画多个矩形相关推荐
- C# winform开发:Graphics、pictureBox同时画多个矩形
C#的System.Drawing 命名空间提供了对 GDI+ 基本图形功能的访问 重点在于获取Graphics对象,例如: Graphics g = panel1.CreateGraphics 事实 ...
- lisp语言画阿基米德线_孩子总说“我不会画”!那么孩子是否要先学画形象?...
01 我们生活在一个具象的世界,一睁眼看到的都是一个个清晰可辨的客观具体形象. 因此,我们在画画时也都是本能地力求去还原和描述这个具体的形象. 从美术史的角度看,尽管经历千百年的发展演变,绘画最终呈现 ...
- 五、C语言创建桌面程序:画笔和画刷
一.画笔画刷的概念 画笔和画刷都用来在画布上绘图.画布就是用来绘画的一块背景,可以有颜色,也可以没有,也可以有图案(比如条纹.网格等):画布可以理解为我们平时作图时使用的纸. 画笔用来画线,可以是封闭 ...
- C语言编程>第四周 ⑦ 用fillellipse画椭圆。
例题:用fillellipse画椭圆. 代码如下: #include "stdio.h" #include <graphics.h> #include <coni ...
- C语言:编写一个程序,从键盘读入一个矩形的两个边的值(整数),求矩形面积
/* 编写一个程序,从键盘读入一个矩形 的两个边的值(整数),求矩形面积. */ #include<stdio.h> void main() {int length,wide,area;p ...
- c语言将矩形分成多个小正方形,蓝桥杯练习算法题(矩形切割成正方形)
书山有路勤为径,学海无涯苦作舟 点赞再看,养成习惯 目录 1.前言 2.题目 3.代码 3.前言: 最近在准备即将到来的蓝桥杯比赛,拼命刷题,锻炼解题的算法,俗话说熟能生巧,现在的是去做大量的题目,来 ...
- 用python画写轮眼代码,写轮眼c语言代码
写轮眼怎么画 写轮眼的画法如下:工具/原料一把圆规.一块橡皮.一只自动笔(铅笔).一只红色彩色铅笔1.首先,我们用圆规画一个较小的圆.2.接着,再在这个圆里面画一个圆,注意:两个圆的距离.大小和位置要 ...
- 使用 .NET WinForm 开发所见即所得的 IDE 开发环境,实现不写代码直接生成应用程序
SailingEase WinForm Framework WinForm开发框架开发手册:http://docs.shengxunwei.com/Home/Browser/sewinformfw/ ...
- C# WinForm开发系列 - GDI+【转】
http://blog.csdn.net/blue_sky6/article/details/53811435?locationNum=6&fps=1 C# WinForm开发系列 - GDI ...
最新文章
- [SCOI2009]生日礼物
- 学者要研究真问题做真学问
- PostgreSQL将表导出为CSV(服务器端、客户机端)完整版
- tomcat启动停止在 Initializing Spring root WebApplicationContext,就不运行了
- java虚引用作用_深入理解Java中的引用(二)——强软弱虚引用
- python 写文件 编码_Python文件写入时的编码问题解决
- 收下这份实操案例,还怕不会用Jmeter接口测试工具?!
- Thrift IDL使用方式
- java 网页 录音_Java+FlashWavRecorder实现网页录音并上传【新】
- 工业物联网实施的6个常见误解
- 14Python爬虫---爬虫伪装浏览器
- element-ui 删除input框尾部默认图标和获取焦点边框高亮问题
- GroovyGrails
- 学习vue3组件事件时,思维发散(溜号)的感悟
- vue2实现京东商城
- pdf压缩文件怎么压缩最小,pdf大小超过上传大小不能上传怎么压缩?
- [BZOJ1616][Usaco2008 Mar]Cow Travelling游荡的奶牛(dfs||dp)
- 为什么墨刀的动效这么酷炫?学会神奇移动,你也可以
- opencv4.5.1 包含了BEBLID算子,一个新的局部特征描述符,超越ORB
- Unix.Trojan.DDoS_XOR-1、Linux.Trojan.Agent(Linux.BackDoor.Gates.5)木马清理
热门文章
- 进大厂要背八股文吗?这是我见过最好的回答
- 问渠那得清如许,唯有源头活水来
- 下载lpv9_v9社区APP下载-v9社区APP官方版 v1.0.4-114手机乐园
- django 查询 value 与 value_list 区别
- python 抢票代码 猫眼演出_python爬取猫眼票房的数据,遇到美团登录验证怎么办...
- 使用matlab深度学习工具箱实现CNN卷积神经网络训练仿真
- validationGroup和Page_ClientValidate()配合使用解决前端click事件返回为false时验证失效问题
- Windows mobile PPC 下利用 tmail.exe 发送短信、彩信、邮件
- 缺乏技术专利支撑的小米还能走多远
- 数据库 蚂蚁_蚂蚁集团把夺得世界第一数据库的 OceanBase 独立公司化