Shape.PointToClient メソッド
更新 : 2007 年 11 月
指定した画面上のポイントの位置を計算してクライアント座標を算出します。
名前空間 : Microsoft.VisualBasic.PowerPacks
アセンブリ : Microsoft.VisualBasic.PowerPacks.Vs (Microsoft.VisualBasic.PowerPacks.Vs.dll 内)
構文
'宣言
Public Function PointToClient ( _
p As Point _
) As Point
'使用
Dim instance As Shape
Dim p As Point
Dim returnValue As Point
returnValue = instance.PointToClient(p)
public Point PointToClient(
Point p
)
public:
Point PointToClient(
Point p
)
public function PointToClient(
p : Point
) : Point
パラメータ
p
型 : System.Drawing.Point画面座標で示された変換対象の Point。
戻り値
変換された Point、p をクライアント座標で表す Point。
解説
PointToClient メソッドを使用して、DragEventArgs などの値を画面座標からフォームのクライアント座標に変換できます。
例
PointToClient メソッドを使用して、イメージ ファイルがドロップされたときに RectangleShape を移動する方法の例を次に示します。PointToClient メソッドは、クライアント フォームを基準として相対的に RectangleShape を移動します。たとえば、四角形の左上隅から下へ 10 ピクセル、右へ 10 ピクセルの位置にドロップした場合、四角形はフォームの左上隅から下へ 10 ピクセル、右へ 10 ピクセルの位置に移動されます。
この例では、RectangleShape1 という名前の RectangleShape コントロールがフォーム上に配置され、フォームの AllowDrop プロパティが true に設定されている必要があります。
Private Sub Form1_DragDrop(ByVal sender As Object, _
ByVal e As System.Windows.Forms.DragEventArgs) Handles Me.DragDrop
' Determine whether the drop is within the rectangle.
If RectangleShape1.HitTest(e.X, e.Y) = True Then
' Handle file data.
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
' Assign the file names to a string array, in
' case the user has selected multiple files.
Dim files As String() = _
CType(e.Data.GetData(DataFormats.FileDrop), String())
Try
' Assign the first image to the BackGroundImage
' property.
RectangleShape1.BackgroundImage = _
Image.FromFile(files(0))
' Set the rectangle location relative to the form.
RectangleShape1.Location = _
RectangleShape1.PointToClient(New Point(e.X, e.Y))
Catch ex As Exception
MessageBox.Show(ex.Message)
Return
End Try
End If
End If
End Sub
Private Sub Form1_DragEnter(ByVal sender As Object, _
ByVal e As DragEventArgs) Handles MyBase.DragEnter
' If the data is a file, display the copy cursor.
If e.Data.GetDataPresent(DataFormats.FileDrop) Then
e.Effect = DragDropEffects.Copy
Else
e.Effect = DragDropEffects.None
End If
End Sub
private void Form1_DragDrop(object sender, System.Windows.Forms.DragEventArgs e)
{
// Determine whether the drop is within the rectangle.
if (rectangleShape1.HitTest(e.X, e.Y)==true)
// Handle file data.
{
if (e.Data.GetDataPresent(DataFormats.FileDrop))
// Assign the file names to a string array, in
// case the user has selected multiple files.
{
string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop);
try
{
// Assign the first image to the BackGroundImage
// property.
rectangleShape1.BackgroundImage = Image.FromFile(files[0]);
// Set the rectangle location relative to the form.
rectangleShape1.Location =
rectangleShape1.PointToClient(new Point(e.X, e.Y));
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
return;
}
}
}
}
private void Form1_DragEnter(object sender, DragEventArgs e)
{
// If the data is a file, display the copy cursor.
if (e.Data.GetDataPresent(DataFormats.FileDrop))
{
e.Effect = DragDropEffects.Copy;
}
else
{
e.Effect = DragDropEffects.None;
}
}
アクセス許可
- 直前の呼び出し元に対する完全な信頼。このメンバは、部分的に信頼されているコードから使用することはできません。詳細については、「部分信頼コードからのライブラリの使用」を参照してください。
参照
参照
Microsoft.VisualBasic.PowerPacks 名前空間
その他の技術情報
方法 : LineShape コントロールを使用して線を描画する (Visual Studio)
方法 : OvalShape コントロールおよび RectangleShape コントロールを使用して図形を描画する (Visual Studio)