画像内で水平な 2 点間に多数のピクセルを必要とするプロジェクトに取り組んでいます。私はこれをWindowsアプリケーションフォームで行っています。
基本的に、ユーザーが画像のあるポイントをクリックしてから別のポイントをクリックすると、水平距離がピクセル数の形式で取得されます。
私はそれをする考えがありません。助けてください。
派生した任意のコントロールを使用して画像が表示されると仮定すると、イベント ( linkControl
)にアクセスできます。Control.MouseClick
このイベントは、プロパティ X を持つMouseEventArgs
( link ) を使用します。
その点からかなり明確なはずです。
編集:この非常に単純な例を追加しました:
private int? x1;
private void MyImageControl_MouseClick(object sender, MouseEventArgs e)
{
if (x1.HasValue)
{
MessageBox.Show("Difference of " + Math.Abs(e.X - x1.Value).ToString());
x1 = null;
}
else
{
x1 = e.X;
}
}
画像コンテナーの場合は、pictureBox を使用していますが、これはラベルまたは必要なコントロールで機能します。
関数の外:
private Boolean clicked_once = false;
private Point point1;
private Point point2;
次に、MouseClick イベント (Click イベントではありません) を追加しました。
private void pictureBox1_MouseClick(object sender, MouseEventArgs e)
{
if (clicked_once == false)
{
clicked_once = true;
point1 = e.Location;
}
else if (clicked_once == true)
{
clicked_once = false;
point2 = e.Location;
int distance = Math.Abs(point1.X - point2.X);
MessageBox.Show("Distance of pixels horizontally: " + distance.ToString());
}
}
動作するはずです。