判断一个点是否在矩形内PtInRegion-解决PtInRect不能正确判断不同形式TRent的情况
PtInRegion
API说明:
BOOL PtInRegion(
HRGN hrgn, // handle of region
int X, // x-coordinate of point
int Y // y-coordinate of point
);
Parameters
hrgn
Identifies the region to be examined.
X
Specifies the x-coordinate of the point.
Y
Specifies the y-coordinate of the point.
Return Values
If the specified point is in the region, the return value is nonzero.
Delphi代码:
unit Unit2;
interface
//{$DEFINE LEFTBOTTOM} //注释调此编译开关 PtInRect不能正确判断在该区域的点,PtInRegion能够正确判断
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm2 = class(TForm)
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormDestroy(Sender: TObject);
private
{ Private declarations }
p1, p2: TPoint; //p1, p2构成矩形
FRect: TRect;
FRgn: HRGN;
public
{ Public declarations }
end;
var
Form2: TForm2;
implementation
{$R *.dfm}
procedure TForm2.FormCreate(Sender: TObject);
begin
//从p1点向p2点方向画矩形(两个点画矩形有4中可能的情况:即p1为左上,左下,右下,右上坐标点)
{$IFDEF LEFTBOTTOM}
//p1为左下坐标,此时PtInRect能够正确判断在该区域的点
p1.X := 30;
p1.Y := 30;
p2.X := 200;
p2.Y := 110;
{$ELSE}
//p1为右上坐标,此时PtInRect不能正确判断在该区域的点
p1.X := 200;
p1.Y := 110;
p2.X := 30;
p2.Y := 30;
{$ENDIF}
FRect.Left := p1.X;
FRect.Right := p2.x;
FRect.Top := p1.y;
FRect.Bottom:= p2.y;
FRgn := CreateRectRgnIndirect(FRect);
end;
procedure TForm2.FormDestroy(Sender: TObject);
begin
DeleteObject(FRgn);
end;
procedure TForm2.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
if PtInRegion(FRgn, X, Y) then {判断鼠标当前点是否在区域内}
ShowMessage('该点在矩形区域内');
end;
procedure TForm2.FormPaint(Sender: TObject);
begin
Canvas.Rectangle(FRect);
end;
end.
判断一个点是否在矩形内PtInRegion-解决PtInRect不能正确判断不同形式TRent的情况相关推荐
- HDU1756(判断一个点是否在多边形内)
以下内容是在自己学习中总结出来了的,如果有什么错误,请指出,谢谢! 判断一个点是否在多边形内: (1)判断方法一(具有一定的局限性):将测试点的Y坐标与多边形的每一个点进行比较,将得到一 个与多边形的 ...
- 【寒江雪】判断一个点是否在网格内
判断一个点是否在多边形网格内 根据前几天看到的博客--<判断一个点是否在多边形内>--突发奇想,设计一个算法判断一个点是否在多面体网格内. 这里假设该网格物体都是由许多个三角面构成 ...
- Java 判断一个点是否在一个三角形内
题目描述: 如何判断一个点是否在一个三角形内. 测试样例: 自定义的POINT类: class POINT{int x;int y;public POINT(int x,int y){this.x ...
- 判断一个点是否在矩形内部
//判断一个点是否在矩形内部 public class InMatrix{//(1)特殊情况,矩形平行于x轴和y轴public static boolean isInMatrix(double x1, ...
- Algorithm: 如何判断一个点是否在一个三角形内
昨日因为机缘巧合,做了一道阿里的实习生编程题.题目很有趣,其中涉及到了如何判断一个点是否在一个三角形内. 其中,判断这个问题最简单的方法是面积法.(图片来源:http://www.cnblogs.co ...
- 能否构成三角形的条件代码_Java 如何判断一个点是否在一个三角形内
题目描述: 如何判断一个点是否在一个三角形内. 测试样例: 自定义的POINT类: class POINT{ int x; int y; public POINT(int x,int y){ this ...
- java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用)
java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用) 代码: package com.liangrui;import java.util.Scanner;/*** 功 ...
- MFC判断一个点是否在一个区域内
1.判断一点是否在矩形区域内的方法: CRect rc (point_1,point_2);//构造矩形区域 调用CRect::PtInRect BOOL flag = rc.PtInRect ...
- 面试高频算法题补充系列:如何判断一个点是否在三角形内?
前言 了解更多常考高频算法题可以关注 公众号:一个搬砖的胖子 企业面试题库:https://codetop.cc/ 小程序:CodeTop 该题曾出现在字节跳动.腾讯.网易.美团.小马智行等公司的面试 ...
最新文章
- java直接量_Java教程:Java直接量(字面量)
- 区块链BaaS云服务(14)华大BGI区块链“Baas接口“
- [译]WPF 应用程序和MVVM设计模式 ——Josh Smith
- 总结一下 Android adb常用命令
- matplotlib的颜色及线条控制
- HTML把表格链接进下拉菜单,excel表格下拉菜单怎么做
- C# 给picturebox添加滚动条
- Atitit 项目高扩展法 目录 1. 提升语言级别	1 1.1. 脚本化 dsl化 免编译	2 1.2. 提升语言级别到4gl	2 1.3. 语言的代际关系 sql 》script 》java	2
- 关于私募基金高水位业绩报酬计提的N种方式!
- 【畅捷通T+Cloud】12.3版本上线啦!
- ie8兼容性视图灰色修复_【ie8兼容性视图灰色修复】ie8兼容性视图 灰色_ie8兼容性视图设置...
- 【系统集成项目管理工程师】—三点估算
- excel表格如何转换成word表格_Word如何制作表格?Word制作表格超实用技巧
- 在Win32下搭建opengl绘制环境
- 评测TFN F4 高性能OTDR光时域反射仪性能
- Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
- 从零开始学Python【38】--朴素贝叶斯模型(实战部分)
- windows 大文件共享传输错误 0X8007003B
- 查找算法之二分查找(对半查找)
- 吃饭困难选择症python_吃饭选择困难症
热门文章
- 无人机学习笔记之遥控篇
- SpringBoot整合thymeleaf和Shiro项目绑定JS接口安全域名问题
- 关于项目需求进行分析的步骤
- process.env详解
- 虚拟机由于找不到msvcr120dll_计算机提示丢失msvcr120.dll文件怎么办?
- 基于 EG6831 的无感 BLDC 控制方案
- PCB各层的含义(讲的非常易懂清晰)
- [译]基于Vue JS, Webpack 以及Material Design的渐进式web应用 [Part 1]
- 健康计划 用户输入身高(m),体重(kg) 计算公式:BMI = 体重 / 身高^2 BMI < 18.5:过轻 18.5≤ BMI <24:正常 24 ≤ BMI <27:过重 27
- DP动态规划--乡村邮局问题-Post Office(POJ-1160)python