マウス位置の確認
Namespace: FVIL.GDIAssembly: FVILbasic (in FVILbasic.dll) Version: 3.1.0.0 (3.1.0.17)
Syntax
C# |
---|
public override int CheckFocusMarkPosition( CFviPoint mouse, double margin ) |
Visual Basic |
---|
Public Overrides Function CheckFocusMarkPosition ( mouse As CFviPoint, margin As Double ) As Integer |
Return Value
Type: Int32引数に指定されたマウスポインタの座標が、図形上のどの位置にあるかを示す位置情報を返します。
マウスポインタの座標が外接矩形外にあれば FVIL.GDI.RectPosition.None を返します。 外接矩形内にあれば、下記の値の論理和を返します。
戻り値:- FVIL.GDI.RectPosition.Left -
- FVIL.GDI.RectPosition.Top -
- FVIL.GDI.RectPosition.Right -
- FVIL.GDI.RectPosition.Bottom -
- FVIL.GDI.RectPosition.Center -
Remarks
この関数は、指定されたマウス位置が 外接矩形 のどの位置にあるかを判定します。
引数 mouse に指定された座標が、外接矩形の各辺の上(下図の青色部分)にあると、 該当する FVIL.GDI.RectPosition の値を返します。 全ての辺の内側に有る場合は、全ての辺の論理和(FVIL.GDI.RectPosition.ALL)を返します。 矩形の角や中心・各辺の中央では交差する辺の論理和を返します。(下図の橙色部分)
引数 margin には、マウス位置と矩形の各辺の比較を行う際の誤差範囲を指定します。 margin に 1 を指定すると、±1 画素の範囲で判定します。
Examples
ソースコード:
C# | Copy |
---|---|
using System; using System.Collections.Generic; using System.Text; using System.Drawing; using fvalgcli; // FvPluginXXXX attribute requires fvalgcli namespace User.SampleCode.GDI { public partial class GdiPoints { // ============================================================ /// <summary> /// マウス位置の確認. /// </summary> [FvPluginExecute] public void CheckFocusMarkPosition() { // 0) 配列の作成. fvalgcli.PNT_T[] datas = new fvalgcli.PNT_T[10]; for (int i = 0; i < 10; i++) { datas[i].x = i * 10 + i; datas[i].y = i * 10 + i; } FVIL.PNT_T_ARRAY pnts = new FVIL.PNT_T_ARRAY(datas); // 1) インスタンスの準備と生成. FVIL.GDI.CFviGdiPoints src = new FVIL.GDI.CFviGdiPoints(pnts); // 2) 処理実行 と確認. FVIL.Data.CFviRectangle cliprect = src.GetClipRect(); FVIL.Data.CFviPoint mouse = new FVIL.Data.CFviPoint(cliprect.Ed.X + 1, cliprect.Ed.Y); int rectPos = src.CheckFocusMarkPosition(mouse, 1); Assert.IsTrue( 0 != (rectPos & (int)FVIL.GDI.RectPosition.Right) , "RectPosition={0}", rectPos); mouse.X = cliprect.St.X; mouse.Y = cliprect.St.Y - 1; rectPos = src.CheckFocusMarkPosition(mouse, 1); Assert.IsTrue(0 != (rectPos & (int)FVIL.GDI.RectPosition.Top), "RectPosition={0}", rectPos); } } } |
Visual Basic | Copy |
---|---|
Imports System.Collections.Generic Imports System.Text Imports System.Drawing Imports fvalgcli ' FvPluginXXXX attribute requires fvalgcli Namespace SampleCode.GDI Public Partial Class GdiPoints ' ============================================================ ''' <summary> ''' マウス位置の確認. ''' </summary> <FvPluginExecute> _ Public Sub CheckFocusMarkPosition() ' 0) 配列の作成. Dim datas As fvalgcli.PNT_T() = New fvalgcli.PNT_T(9) {} For i As Integer = 0 To 9 datas(i).x = i * 10 + i datas(i).y = i * 10 + i Next Dim pnts As New FVIL.PNT_T_ARRAY(datas) ' 1) インスタンスの準備と生成. Dim src As New FVIL.GDI.CFviGdiPoints(pnts) ' 2) 処理実行 と確認. Dim cliprect As FVIL.Data.CFviRectangle = src.GetClipRect() Dim mouse As New FVIL.Data.CFviPoint(cliprect.Ed.X + 1, cliprect.Ed.Y) Dim rectPos As Integer = src.CheckFocusMarkPosition(mouse, 1) Assert.IsTrue(0 <> (rectPos And CInt(FVIL.GDI.RectPosition.Right)), "RectPosition={0}", rectPos) mouse.X = cliprect.St.X mouse.Y = cliprect.St.Y - 1 rectPos = src.CheckFocusMarkPosition(mouse, 1) Assert.IsTrue(0 <> (rectPos And CInt(FVIL.GDI.RectPosition.Top)), "RectPosition={0}", rectPos) End Sub End Class End Namespace |