다음을 통해 공유


InkOverlay.MouseDown 이벤트

업데이트: 2007년 11월

마우스 포인터가 InkOverlay 개체 위에 있을 때 마우스 단추를 누르면 발생합니다.

네임스페이스:  Microsoft.Ink
어셈블리:  Microsoft.Ink(Microsoft.Ink.dll)

구문

‘선언
Public Event MouseDown As InkCollectorMouseDownEventHandler
‘사용 방법
Dim instance As InkOverlay
Dim handler As InkCollectorMouseDownEventHandler

AddHandler instance.MouseDown, handler
public event InkCollectorMouseDownEventHandler MouseDown
public:
 event InkCollectorMouseDownEventHandler^ MouseDown {
    void add (InkCollectorMouseDownEventHandler^ value);
    void remove (InkCollectorMouseDownEventHandler^ value);
}
/** @event */
public void add_MouseDown (InkCollectorMouseDownEventHandler value)
/** @event */
public void remove_MouseDown (InkCollectorMouseDownEventHandler value)
JScript에서는 이벤트를 지원하지 않습니다.

설명

이벤트 처리기는 이 이벤트에 대한 데이터가 들어 있는 CancelMouseEventArgs 형식의 인수를 받습니다.

InkCollectorMouseDownEventHandler 대리자를 만들 때는 이벤트를 처리할 메서드를 식별합니다. 이벤트를 이벤트 처리기와 연결하려면 대리자의 인스턴스를 해당 이벤트에 추가합니다. 대리자를 제거하지 않는 경우 이벤트가 발생할 때마다 이벤트 처리기가 호출됩니다. 이벤트 관심도는 성능상의 이유로 기본적으로 해제되어 있지만 이벤트 처리기를 추가하면 자동으로 설정됩니다.

실시간 잉크 성능을 높이려면 잉크를 그리는 동안 마우스 커서를 숨겨야 합니다. 이렇게 하려면 MouseDown 이벤트 처리기에서 마우스 커서를 숨기고 MouseUp 이벤트 처리기에서 마우스 커서를 표시합니다.

참고

CancelMouseEventArgs 개체의 X 및 Y 속성은 잉크 공간에 연결된 HIMETRIC 단위가 아닌 픽셀 단위입니다. 이는 펜을 인식하지 않는 응용 프로그램의 관련 마우스 이벤트가 이 이벤트로 대체되며 이러한 응용 프로그램에는 픽셀 단위가 사용되기 때문입니다.

참고

일부 컨트롤은 MouseDown, MouseMoveMouseUp 이벤트 간의 특정 관계에 의존합니다. 이러한 이벤트 중 일부를 취소하면 예기치 않은 결과가 나타날 수 있습니다.

예제

이 예제에서는 MouseDown 이벤트가 발생할 때 EditingModeSelect로 설정되어 있는지 확인합니다. 확인에 성공하면 HitTestSelection 메서드를 호출하여 선택 영역에서 적중된 부분(있는 경우)을 확인합니다. SelectionHitResult 열거형에 지정된 대로 네 가지 주요 컴퍼스 방향에서 적중이 발생한 경우 선택된 스트로크 개체가 다른 색으로 변경됩니다.

Private Sub mInkObject_MouseDown(ByVal sender As Object, ByVal e As CancelMouseEventArgs)

    If InkOverlayEditingMode.Select = mInkObject.EditingMode Then
        Select Case mInkObject.HitTestSelection(e.X, e.Y)
            Case SelectionHitResult.North
                ChangeSelectionColor(Color.Green)
            Case SelectionHitResult.East
                ChangeSelectionColor(Color.Red)
            Case SelectionHitResult.South
                ChangeSelectionColor(Color.Purple)
            Case SelectionHitResult.West
                ChangeSelectionColor(Color.Blue)
        End Select
    End If
End Sub

Private Sub ChangeSelectionColor(ByVal color As Color)
    Dim DA As DrawingAttributes = mInkObject.DefaultDrawingAttributes.Clone()
    DA.Color = color
    mInkObject.Selection.ModifyDrawingAttributes(DA)
    Using G As Graphics = CreateGraphics()
        ' Get the bounding box of the selection. The default is
        ' to include the width of the strokes in the calculation.
        ' The returned rectangle is measured in ink units.
        Dim rInkUnits As Rectangle = mInkObject.Selection.GetBoundingBox()

        ' In selection mode, the selected strokes are drawn inflated
        ' GetBoundingBox() does not take this into account
        ' Rectangle rInkUnits is inflated to compensate
        rInkUnits.Inflate(53, 53)

        Dim topLeft As Point = rInkUnits.Location
        Dim bottomRight As Point = rInkUnits.Location + rInkUnits.Size

        ' get a Renderer object to make the conversion
        Dim R As Renderer = New Renderer()

        ' convert the points to pixels
        R.InkSpaceToPixel(G, topLeft)
        R.InkSpaceToPixel(G, bottomRight)

        ' create a rectangle that is in pixels
        Dim rPixelUnits As Rectangle = _
            New Rectangle(topLeft, New Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y))

        ' Redraw the strokes
        mInkObject.Draw(rPixelUnits)

    End Using
End Sub
private void mInkObject_MouseDown(object sender, CancelMouseEventArgs e)
{
    if (InkOverlayEditingMode.Select == mInkObject.EditingMode)
    {
        switch (mInkObject.HitTestSelection(e.X, e.Y))
        {
            case SelectionHitResult.North:
                ChangeSelectionColor(Color.Green);
                break;
            case SelectionHitResult.East:
                ChangeSelectionColor(Color.Red);
                break;
            case SelectionHitResult.South:
                ChangeSelectionColor(Color.Purple);
                break;
            case SelectionHitResult.West:
                ChangeSelectionColor(Color.Blue);
                break;
        }
    }
}

private void ChangeSelectionColor(Color color)
{
    DrawingAttributes DA = mInkObject.DefaultDrawingAttributes.Clone();
    DA.Color = color;
    mInkObject.Selection.ModifyDrawingAttributes(DA);
    using (Graphics G = CreateGraphics())
    {
        // Get the bounding box of the selection. The default is
        // to include the width of the strokes in the calculation.
        // The returned rectangle is measured in ink units.
        Rectangle rInkUnits = mInkObject.Selection.GetBoundingBox();

        // In selection mode, the selected strokes are drawn inflated
        // GetBoundingBox() does not take this into account
        // Rectangle rInkUnits is inflated to compensate
        rInkUnits.Inflate(53, 53);

        Point topLeft = rInkUnits.Location;
        Point bottomRight = rInkUnits.Location + rInkUnits.Size;

        // get a Renderer object to make the conversion
        Renderer R = new Renderer();

        // convert the points to pixels
        R.InkSpaceToPixel(G, ref topLeft);
        R.InkSpaceToPixel(G, ref bottomRight);

        // create a rectangle that is in pixels
        Rectangle rPixelUnits =
            new Rectangle(topLeft, new Size(bottomRight.X - topLeft.X, bottomRight.Y - topLeft.Y));

        // Redraw the strokes
        mInkObject.Draw(rPixelUnits);

    } 
}

플랫폼

Windows Vista

.NET Framework 및 .NET Compact Framework에서 모든 플랫폼의 전체 버전을 지원하지는 않습니다. 지원되는 버전의 목록을 보려면 .NET Framework 시스템 요구 사항을 참조하십시오.

버전 정보

.NET Framework

3.0에서 지원

참고 항목

참조

InkOverlay 클래스

InkOverlay 멤버

Microsoft.Ink 네임스페이스

CancelMouseEventArgs

InkOverlay.MouseMove

InkOverlay.MouseUp