C#窗体上绘制矩形
先上效果图
鼠标三个事件
private void Form1_MouseDown(object sender, MouseEventArgs e) { //记录开始点 this.mousedown = true; this.startpoint = e.Location; } private void Form1_MouseMove(object sender, MouseEventArgs e) { //记录结束点。绘制到窗口上 if (mousedown) { this.endpoint = e.Location; this.Refresh(); gform.DrawImage(, )); Rectangle rect = new Rectangle(); this.rect_play(ref rect); gform.DrawRectangle(new Pen(Color.Black), rect); } } private void Form1_MouseUp(object sender, MouseEventArgs e) { //记录结束点。绘制到bitmap上 this.endpoint = e.Location; this.mousedown = false; Rectangle rect = new Rectangle(); this.rect_play(ref rect); g.DrawRectangle(new Pen(Color.Black), rect); gform.DrawImage(, )); }
根据startpoint和endpoint两个点去确定要画的矩形Location和width,heigth
private void rect_play( ref Rectangle rect) { //根据两个点确定矩形的左上角点Location if (this.startpoint.X > this.endpoint.X && this.startpoint.Y < this.endpoint.Y) { rect.Location = new Point(this.endpoint.X, this.startpoint.Y); } else if (this.startpoint.X < this.endpoint.X && this.startpoint.Y > this.endpoint.Y) { rect.Location = new Point(this.startpoint.X, this.endpoint.Y); } else if (this.startpoint.X > this.endpoint.X && this.startpoint.Y > this.endpoint.Y) { rect.Location = this.endpoint; } else { rect.Location = this.startpoint; } //获取两点的X,Y距离 rect.Width = Math.Abs(this.startpoint.X - this.endpoint.X); rect.Height = Math.Abs(this.startpoint.Y - this.endpoint.Y); && rect.Height == ) { //防止误点的时候进行绘制 } ) { rect.Width = ; } ) { rect.Height = ; } }
完整实例代码链接:http://pan.baidu.com/s/1sjkpic1
画的时候窗口闪的特别厉害啊,因为大量的Refresh和Draw,开双缓冲也不起多大作用
迟点有时间用QT c++做一个,QT写出来的应该是不会闪烁的
如果哪位前辈有能解决闪烁问题的,希望在评论区留言,感激不尽
补:http://www.cnblogs.com/magicianlyx/p/4987169.html 这个是QT版本的,不会闪烁
C#窗体上绘制矩形的更多相关文章
- 如何用 matlab 在图片上绘制矩形框 和 添加文字 ?
如何给图像添加矩形框?以及添加想要输入的文字 ? 案例程序,如下所示: clc; close all; clear all;image = imread('/home/wangxiao/Picture ...
- Javascript高级编程学习笔记(86)—— Canvas(3)绘制矩形
绘制矩形 矩形是唯一一种可以直接在2D上下文中绘制的形状. 与矩形有关的方法包括: fillRect() strokeRect() clearRect() 上述方法都接收四个参数: 绘制矩形的 X 坐 ...
- Opencv在视频中静态、动态方式绘制矩形框ROI
Opencv视频处理中的目标跟踪经常用到要在视频上画一个矩形框ROI,标注出要跟踪的物体,这里介绍两种在视频中绘制矩形框的方法,一种是"静态的",一种是"动态的" ...
- vue下canvas绘制矩形
起因:根据项目需求本人写了一个绘制矩形的组件.功能:在图片中绘制矩形,根据图片大小进行自适应展示,获取图片矩形坐标.思路:首先定义一个固定大小的DIV,DIV标签中有监测鼠标变化的四个事件moused ...
- OpenCV之响应鼠标(四):在图像上绘制出矩形并标出起点的坐标
涉及到两方面的内容:1. 用鼠标画出矩形.2.在图像上绘制出点的坐标 用鼠标绘制矩形,涉及到鼠标的操作,opencv中有鼠标事件的介绍.需要用到两个函数:回调函数CvMouseCallback和注册回 ...
- c#在pictureBox控件上绘制多个矩形框及删除绘制的矩形框
在pictureBox上每次只绘制一个矩形框,绘制下一个矩形框时上次绘制的矩形框取消,代码如链接:https://www.cnblogs.com/luxiao/p/5625196.html 在绘制矩形 ...
- [C#绘图]在半透明矩形上绘制字符串
首先要绘制一个半透明的矩形,用到的方法当然是FillRectangle().这个函数在调用的时候除了要指明要绘制的矩形外,还要指明填充矩形的背景色.具体的方法就是在绘制矩形的时候传给它一个画刷Brus ...
- 【MFC】如何在MFC创建的程序中更改主窗口的属性 与 父窗口 WS_CLIPCHILDREN 样式 对子窗口刷新的影响 与 窗体区域绘制问题WS_CLIPCHILDREN与WS_CLIPSIBLINGS
如何在MFC创建的程序中更改主窗口的属性 摘自:http://blog.sina.com.cn/s/blog_4bebc4830100aq1m.html 在MFC创建的单文档界面中: (基于对话框的, ...
- opencv2 使用鼠标绘制矩形并截取和保存矩形区域图像
前言 好长时间没写博文了,今天偷偷懒写篇关于opencv2中鼠标响应操作的文章. 鼠标操作属于用户接口设计,以前一直使用Qt来做,但是如果只需要简单的鼠标,键盘操作,直接调用opencv库的函数也未尝 ...
随机推荐
- 11 linux nginx上安装ecshop 案例
一: nginx上安装ecshop 案例 (1)解压到 nginx/html下 浏览器访问:127.0.0.1/ecshop/index.php 出现错误:not funod file 原因:ngin ...
- cocos2dx 3.2+ 项目创建与问题总汇
本文为Cocos2d-x 3.x 全平台(Android,iOS)新手开发配置教程攻略,希望对大家有所帮助.由于这篇文章是面对新手的. 所以有些地方会啰嗦一些,请勿见怪. 假设教程中有错误.欢迎指正. ...
- python跳坑手记
解决python同目录报错:import util 改成 from . import util
- Java&Xml教程(十)XML作为属性文件使用
我们一般会将Java应用的配置參数保存在属性文件里.Java应用的属性文件能够是一个正常的基于key-value对,以properties为扩展名的文件.也能够是XML文件. 在本案例中.將会向大家介 ...
- Android Apk包下查看 sha1
用keytool工具查看sha1,格式如下:keytool -printcert -file Urovo.RSA文件路径(APK解压后在Meta-INF文件夹下)
- Unix环境高级编程第三版中实例代码如何在自己的linux上运行的问题
学习Linux已经有2个月了,最近被期末考试把进度耽误了,前几天把Unix环境高级编程看了两章,感觉对Linux的整体有了一些思路,今天尝试着对第一章涉及到的一个简单的交互式shell编译运行一下,结 ...
- Darwin做直播时对ReflectorSession引用数的控制
在之前的博客中,我们提到了如何用Darwin&live555实现直播过程,那么更进一步,当直播结束时,我们需要关闭所有正在收看的客户端,并且delete转发会话ReflectorSession ...
- 九度OJ 1031:xxx定律 (基础题)
时间限制:1 秒 内存限制:32 兆 特殊判题:否 提交:6058 解决:3816 题目描述: 对于一个数n,如果是偶数,就把n砍掉一半:如果是奇数,把n变成 3*n+ 1后砍掉一半,直到该数 ...
- d[k]=eval(k)
lk = ['oid', 'timestamp', 'signals', 'area', 'building', 'city', 'name', 'floor', 'industry', 'regio ...
- 我的Android进阶之旅------>Android中MediaButtonReceiver广播监听器的机制分析
今天看公司的一段关于MediaButtonReceiver的代码看的比较混乱,幸好看了下面的这篇文章,才能茅塞顿开的理解好代码.在此转载下来,以备以后理解,希望都到这篇文章的人也能够有所帮助. 本文转 ...