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的情况相关推荐

  1. HDU1756(判断一个点是否在多边形内)

    以下内容是在自己学习中总结出来了的,如果有什么错误,请指出,谢谢! 判断一个点是否在多边形内: (1)判断方法一(具有一定的局限性):将测试点的Y坐标与多边形的每一个点进行比较,将得到一 个与多边形的 ...

  2. 【寒江雪】判断一个点是否在网格内

    判断一个点是否在多边形网格内   根据前几天看到的博客--<判断一个点是否在多边形内>--突发奇想,设计一个算法判断一个点是否在多面体网格内.   这里假设该网格物体都是由许多个三角面构成 ...

  3. Java 判断一个点是否在一个三角形内

    题目描述:   如何判断一个点是否在一个三角形内. 测试样例: 自定义的POINT类: class POINT{int x;int y;public POINT(int x,int y){this.x ...

  4. 判断一个点是否在矩形内部

    //判断一个点是否在矩形内部 public class InMatrix{//(1)特殊情况,矩形平行于x轴和y轴public static boolean isInMatrix(double x1, ...

  5. Algorithm: 如何判断一个点是否在一个三角形内

    昨日因为机缘巧合,做了一道阿里的实习生编程题.题目很有趣,其中涉及到了如何判断一个点是否在一个三角形内. 其中,判断这个问题最简单的方法是面积法.(图片来源:http://www.cnblogs.co ...

  6. 能否构成三角形的条件代码_Java 如何判断一个点是否在一个三角形内

    题目描述: 如何判断一个点是否在一个三角形内. 测试样例: 自定义的POINT类: class POINT{ int x; int y; public POINT(int x,int y){ this ...

  7. java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用)

    java实现判断一个整数是奇数还是偶数(Scanner运用,if判断运用,%求余运用) 代码: package com.liangrui;import java.util.Scanner;/*** 功 ...

  8. MFC判断一个点是否在一个区域内

    1.判断一点是否在矩形区域内的方法: CRect rc (point_1,point_2);//构造矩形区域 调用CRect::PtInRect     BOOL flag = rc.PtInRect ...

  9. 面试高频算法题补充系列:如何判断一个点是否在三角形内?

    前言 了解更多常考高频算法题可以关注 公众号:一个搬砖的胖子 企业面试题库:https://codetop.cc/ 小程序:CodeTop 该题曾出现在字节跳动.腾讯.网易.美团.小马智行等公司的面试 ...

最新文章

  1. java直接量_Java教程:Java直接量(字面量)
  2. 区块链BaaS云服务(14)华大BGI区块链“Baas接口“
  3. [译]WPF 应用程序和MVVM设计模式 ——Josh Smith
  4. 总结一下 Android adb常用命令
  5. matplotlib的颜色及线条控制
  6. HTML把表格链接进下拉菜单,excel表格下拉菜单怎么做
  7. C# 给picturebox添加滚动条
  8. Atitit 项目高扩展法 目录 1. 提升语言级别 1 1.1. 脚本化 dsl化 免编译 2 1.2. 提升语言级别到4gl 2 1.3. 语言的代际关系 sql 》script 》java 2
  9. 关于私募基金高水位业绩报酬计提的N种方式!
  10. 【畅捷通T+Cloud】12.3版本上线啦!
  11. ie8兼容性视图灰色修复_【ie8兼容性视图灰色修复】ie8兼容性视图 灰色_ie8兼容性视图设置...
  12. 【系统集成项目管理工程师】—三点估算
  13. excel表格如何转换成word表格_Word如何制作表格?Word制作表格超实用技巧
  14. 在Win32下搭建opengl绘制环境
  15. 评测TFN F4 高性能OTDR光时域反射仪性能
  16. Docker —— 用于统一开发和部署的轻量级 Linux 容器【转】
  17. 从零开始学Python【38】--朴素贝叶斯模型(实战部分)
  18. windows 大文件共享传输错误 0X8007003B
  19. 查找算法之二分查找(对半查找)
  20. 吃饭困难选择症python_吃饭选择困难症

热门文章

  1. 无人机学习笔记之遥控篇
  2. SpringBoot整合thymeleaf和Shiro项目绑定JS接口安全域名问题
  3. 关于项目需求进行分析的步骤
  4. process.env详解
  5. 虚拟机由于找不到msvcr120dll_计算机提示丢失msvcr120.dll文件怎么办?
  6. 基于 EG6831 的无感 BLDC 控制方案
  7. PCB各层的含义(讲的非常易懂清晰)
  8. [译]基于Vue JS, Webpack 以及Material Design的渐进式web应用 [Part 1]
  9. 健康计划 用户输入身高(m),体重(kg) 计算公式:BMI = 体重 / 身高^2 BMI < 18.5:过轻 18.5≤ BMI <24:正常 24 ≤ BMI <27:过重 27
  10. DP动态规划--乡村邮局问题-Post Office(POJ-1160)python