文档章节

再学 GDI+[51]: 路径 - IsVisible、IsOutlineVisible

涂孟超
 涂孟超
发布于 2014/09/26 15:33
字数 302
阅读 4
收藏 0
本例效果图:



代码文件:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs;

type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure FormPaint(Sender: TObject);
    procedure FormMouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses GDIPOBJ, GDIPAPI;

var
  path1,path2,path3: TGPGraphicsPath;
  p: TGPPen;

procedure TForm1.FormCreate(Sender: TObject);
var
  r: TRect;
begin
  path1 := TGPGraphicsPath.Create;
  path2 := TGPGraphicsPath.Create;
  path3 := TGPGraphicsPath.Create;
  p := TGPPen.Create(aclRed, 3);

  path1.AddLine(0, 0, ClientWidth, ClientHeight);

  r := ClientRect;
  InflateRect(r, -ClientWidth div 3, -ClientHeight div 3);
  OffsetRect(r, -Trunc((r.Right-r.Left) * 0.6), -Trunc((r.Bottom-r.Top) * 0.6));
  path2.AddRectangle(MakeRect(r));

  OffsetRect(r, r.Right-r.Left, r.Bottom-r.Top);
  path3.AddEllipse(MakeRect(r));
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  path1.Free;
  path2.Free;
  path3.Free;
  p.Free;
end;

procedure TForm1.FormPaint(Sender: TObject);
var
  g: TGPGraphics;
begin
  g := TGPGraphics.Create(Canvas.Handle);
  g.DrawPath(p, path1);
  g.DrawPath(p, path2);
  g.DrawPath(p, path3);
  g.Free;
end;

procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
  Y: Integer);
begin
  Text := '';
//  if path1.IsVisible(MakePoint(X,Y)) then Text := '在 path1 内';
  if path2.IsVisible(MakePoint(X,Y)) then Text := '在矩形内';
  if path3.IsVisible(MakePoint(X,Y)) then Text := '在椭圆内';

  if path1.IsOutlineVisible(X, Y, p) then Text := '在直线上';
  if path2.IsOutlineVisible(X, Y, p) then Text := '在矩形的边线上';
  if path3.IsOutlineVisible(X, Y, p) then Text := '在椭圆的圆周线上';
end;

end.

 
 
 
 
 

 

 

  
窗体文件:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 206
  ClientWidth = 339
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  Position = poDesktopCenter
  OnCreate = FormCreate
  OnDestroy = FormDestroy
  OnMouseMove = FormMouseMove
  OnPaint = FormPaint
  PixelsPerInch = 96
  TextHeight = 13
end

 
 
 
 
 

 

 

  

本文转载自:http://www.cnblogs.com/del/archive/2008/06/19/1226043.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
DNN Navisuite菜单模块原始XML文件的格式

DNN 比较好用的一个菜单模块式Navsuite模块,这个模块因为使用XML+XSL的技术手段,可以灵活的生成各种各样的菜单样式。 你可以通过修改style目录下的xsl文件来创建自己的菜单样式,但有一个问...

m2land
2009/04/12
0
0
使用WM_QUIT终止线程

下面是一个线程1的函数: ThreadFun1 { ....// A while (::GetMessage(&msg, NULL, 0, 0)) { if (!TranslateAccelerator(msg.hwnd, hAccelTable, &msg)) { TranslateMessage(&msg); Dispatc......

技术小甜
2017/11/07
0
0
VC实现多格式图像的转换

色彩鲜艳漂亮的高品质图像,一个个形象生动的Windows图标,高速运动、活灵活现的三维动画,这些无一不显示出程序设计者的艺术才华。在程序设计中,图像处理已经成为每个程序员的必修课。 在V...

余二五
2017/11/06
0
0
实战开发:新手小白如何用C++制作经典网游DNF

十年前,那时候的网吧还不叫网咖,那时候没有王者荣耀也没有英雄联盟,那时候梦幻西游刚推出珍宝阁系统,那时候巫妖王的灵魂还封闭在冰封王座。 寻仙、穿越火线、征途、天龙八部……同时在线...

stone15165
05/05
0
0
C#操作合并多个Word文档

首先将word文档路径保存在List中,新建一个word文档对象并循环List打开对应的word,之后拷贝文档,在新文档中粘贴并且粘贴前先插入换行符。最后保存新文档,并销毁进程。 protected void But...

老朱教授
2017/10/08
0
0

没有更多内容

加载失败,请刷新页面

加载更多

git 常用命令

本文档适合有一定git使用基础的用户,当使用时忘记使用命令可以起参考作用,新手请移步其他详细教程 下载安装 下载git完成之后,配置用户 $ git config --global user.name "Your Name"$ g...

杨鹏飞乀
15分钟前
6
0
返回历史页面,并刷新该历史页面

原来 还真的有 可以 返回历史 上一个页面,并刷新历史页面的 API的, 之前以为没有,所以只能每次返回 上一个页面的时候,都是直接 写上了 该页面的路径, 也就是直接去访问了。 而document....

之渊
17分钟前
1
0
MaxCompute新功能发布

2018年Q3 MaxCompute重磅发布了一系列新功能。 本文对主要新功能和增强功能进行了概述。 实时交互式查询:Lightning on MaxCompute 生态兼容:Spark on MaxCompute New SQL 新特性发布 Pyth...

阿里云云栖社区
18分钟前
4
0
PHP实现excel导入

1、前端写法 <input type="file" name="myfile" id="uploadingFiles" value="上传excel文件" /> <input type="text" name="mode" id="uploadingmode" value="" /> <button id="determin" cl......

葬-花
19分钟前
2
0
SpringBoot打jar包或war包获取不到资源文件解决办法

问题描述 在开发过程中我们经常会碰到要在代码中获取资源文件的情况,而我在最近将原有的Tomcat的原生项目迁移到SpringBoot项目中时碰到一个问题,就是在本地运行时,获取本地的xml资源文件是...

不学无数的程序员
25分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部