c语言中如何找坐标,如何在C语言中找到四个坐标并擦除RubberBand矩形的绘图#
嗨,我试着用C中的鼠标在窗体上绘制一个橡皮矩形。
问题
1)鼠标释放后,矩形消失。[我想把它留在表格上]
2)我还需要找到绘制矩形的四个点的坐标。
3)必要时,我还需要删除矩形以绘制新的矩形。
形式:
代码
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
namespace rubberbandrectangle
{
public partial class Form1 : Form
{
Boolean bHaveMouse;
Point ptOriginal = new Point();
Point ptLast = new Point();
public Form1()
{
InitializeComponent();
}
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
bHaveMouse = true;
ptOriginal.X = e.X;
ptOriginal.Y = e.Y;
ptLast.X = -1;
ptLast.Y = -1;
}
private void MyDrawReversibleRectangle(Point p1, Point p2)
{
Rectangle rc = new Rectangle();
p1 = PointToScreen(p1);
p2 = PointToScreen(p2);
if (p1.X < p2.X)
{
rc.X = p1.X;
rc.Width = p2.X - p1.X;
}
else
{
rc.X = p2.X;
rc.Width = p1.X - p2.X;
}
if (p1.Y < p2.Y)
{
rc.Y = p1.Y;
rc.Height = p2.Y - p1.Y;
}
else
{
rc.Y = p2.Y;
rc.Height = p1.Y - p2.Y;
}
ControlPaint.DrawReversibleFrame(rc,
Color.Red, FrameStyle.Dashed);
}
private void Form1_MouseUp(object sender, MouseEventArgs e)
{
bHaveMouse = false;
if (ptLast.X != -1)
{
Point ptCurrent = new Point(e.X, e.Y);
MyDrawReversibleRectangle(ptOriginal, ptLast);
}
ptLast.X = -1;
ptLast.Y = -1;
ptOriginal.X = -1;
ptOriginal.Y = -1;
}
private void Form1_MouseMove(object sender, MouseEventArgs e)
{
Point ptCurrent = new Point(e.X, e.Y);
if (bHaveMouse)
{
if (ptLast.X != -1)
{
MyDrawReversibleRectangle(ptOriginal, ptLast);
}
ptLast = ptCurrent;
MyDrawReversibleRectangle(ptOriginal, ptCurrent);
}
}
private void Form1_Load(object sender, EventArgs e)
{
MouseDown += new MouseEventHandler(Form1_MouseDown);
MouseUp += new MouseEventHandler(Form1_MouseUp);
MouseMove += new MouseEventHandler(Form1_MouseMove);
bHaveMouse = false;
}
}
}
谢谢你的阅读
c语言中如何找坐标,如何在C语言中找到四个坐标并擦除RubberBand矩形的绘图#相关推荐
- java 线程中创建线程_如何在Java 8中创建线程安全的ConcurrentHashSet?
java 线程中创建线程 在JDK 8之前,还没有办法在Java中创建大型的线程安全的ConcurrentHashSet. java.util.concurrent包甚至没有一个名为Concurren ...
- c语言如何输入矩阵_如何在 COMSOL 软件中调试外部材料
问题描述 我实现了一种用于"结构力学"的外部材料,但我的模型无法求解. 解决方法 外部材料一般通过 C 语言编码,然后被编译到共享库中,供 COMSOL Multiphysics ...
- c语言如何输入数字,请问如何在C语言中输入数字获得拼音?
请问如何在C语言中输入数字获得拼音? 答案:1 信息版本:手机版 解决时间 2018-12-10 16:41 已解决 2018-12-10 08:20 请问如何在C语言中输入数字获得拼音? 最佳答案 ...
- c语言编程输出字母倒三角形,如何在C语言中打印倒三角形
如何在C语言中打印倒三角形 发布时间:2020-07-28 11:53:15 来源:亿速云 阅读:281 作者:Leah 这期内容当中小编将会给大家带来有关如何在C语言中打印倒三角形,文章内容丰富且以 ...
- python类中没有属性_如何在python语言中在类中删除属性和添加属性
在python语言中的类,可以使用class定义类,调用__init__方法进行初始化:默认传入self,可以在后面在添加几个属性.可以使用setattr()添加属性,也可以使用delattr()删除 ...
- c 语言 函数返回数组_如何在C ++函数中返回数组
c 语言 函数返回数组 介绍 (Introduction) In this tutorial, we are going to understand how we can return an arra ...
- react中纯函数_如何在纯React中创建电子邮件芯片
react中纯函数 by Andreas Remdt 由Andreas Remdt 如何在纯React中创建电子邮件芯片 (How to create email chips in pure Reac ...
- java excel 操作 jar包_[JAVA]使用POI向Excel中写入数据以及如何在Intellj IDEA中打jar包...
freddon 发表于2018-05-30 阅读 1383 | 评论 0 给GF写的,现在记录下POI操作Excel读写过程;以及如何在Intellj IDEA中打jar包 代码如下: ``` imp ...
- android中的后退功能,如何在Android应用中实现一个返回键功能
如何在Android应用中实现一个返回键功能 发布时间:2020-11-23 16:28:56 来源:亿速云 阅读:89 作者:Leah 今天就跟大家聊聊有关如何在Android应用中实现一个返回键功 ...
- 在vm中安装linux虚拟机,如何在vm虚拟机中安装linux
1.首先在vm中新建一个虚拟机 2.选择典型 3.点击稍后安装操作系统 4.选择安装linux,版本可以选择centOS64位的,根据自己系统的位数选择即可 5.选择安装路径,建议装在其他盘,..反正 ...
最新文章
- integer比较_Java整数缓存Integer.valueOf(127)==Integer.valueOf(127)为True
- 长春理工有计算机专业吗,长春理工大学(专业学位)计算机技术考研难吗
- CentOS 5 安装as86汇编器
- 深入浅出的排序算法-冒泡排序
- selenium 图片上传
- 复习django项目一——迁移数据库
- 今日奇葩事件,一位不懂技术,却来管理技术团队的领导
- Cocos2dx 之 ButtonSprite
- 蒋方舟:到清华不再做名人 狂热崇拜理工男生
- XTDorne平台搭建无人机仿真环境时遇到的问题及解决
- ACM-ICPC 2018 南京赛区网络预赛 K. The Great Nim Game(博弈)
- java用springboot开发的美食菜谱网(有美食达人)附论文
- Linux常用命令及面试题
- 树莓派程序开机自启(尝试过很多终于成了)
- EM算法-数学原理及其证明
- 0代码实现接口自动化测试 —— RF框架实践
- PHP 实现 阿里云 短信发送 功能步骤
- java发送邮箱_Java发送邮件
- html5毕业答辩ppt,【图】毕业论文ppt内容(毕业论文毕业答辩PPT制作和讲述要点)...
- ASP.net网页进行数据更新操作