2016-06-20 3 views
0

私は学校プロジェクトに取り組んでおり、POIマップを作成する必要があります。これは私がそれを行う方法です:私はpictureboxのコントロールで画像をロードする必要があります(それはちょうど鳥の視点からのスタジアムの画像かもしれません)、pictureboxのクリックイベントを持って、座標をとって(小さなカスタムアイコンなどのように)別のイメージを調整します。WindowsフォームC#でPOIマップを作成する。アイコン(画像)をマップ(画像ボックス内の既存の画像)に重ねるにはどうすればよいですか?

もちろん、その画像を入れている間に、私はpictureboxの既存の画像(地図)を置き換えずに、既存の画像に1つの画像を作ることを望んでいます。また、後でデータベースにPOIアイコンを置く場所を覚えておく必要がありますが、それはこの問題の質問の一部ではありません。 あなたは何を考えていますか(特定の座標を持つ画像、既にpictureboxと記入されている別の画像を上回る可能性があります)、または私の問題を解決するための別の「アイデア」を作る必要がありますか?可能であれば、どのようにすればいいのですか(例のコードは高く評価されます)。可能でない場合は、別の方法(他のWinFormsコントロール、他のイベントなど)を行う方法をアドバイスしてもらえますか?事前に感謝し、文法上の間違いを赦してください。

答えて

0

は(私の悪い英語のため申し訳ありませんが)、これを試してみてください:私たちは新しいPictureBoxを作成し、メインPictureBoxの上に置いたClickイベントハンドラで

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     //InitializeComponent(); 
     Width = 800; 
     Height = 600; 

     pictureBox = new PictureBox { Parent = this, Dock = DockStyle.Top, Height = 500 }; 
     pictureBox.ImageLocation = "pic.jpg"; 

     pictureBox.Click += PictureBox_Click; 
    } 

    PictureBox pictureBox; 
    List<Point> points = new List<Point>(); 

    private void PictureBox_Click(object sender, EventArgs e) 
    { 
     var point = pictureBox.PointToClient(MousePosition); 
     points.Add(point); 
     var iconBox = new PictureBox { Parent = pictureBox, Location = point, Size = new Size(32, 32) }; 
     iconBox.Image = SystemIcons.Hand.ToBitmap(); 
     iconBox.Click += IconBox_Click; 
    } 

    private void IconBox_Click(object sender, EventArgs e) 
    { 
     var pb = (PictureBox)sender; 
     points.Remove(pb.Location); 
     pb.Parent = null; 
     pb.Click -= IconBox_Click; 
     pb.Dispose(); 
    } 
} 

を。彼に希望の画像を設定します(私はシンプルさのためにシステムアイコンを使用しました)。

PictureBoxのそれぞれにクリックハンドラを追加し、マウスクリックで削除します。そのハンドラでは、リストと親コントロールから不要なものが削除されました(PictureBox)。イベントから退会する。次にそれを処分する。

ポイントのリストをデータベースまたはファイルに保存できます。

関連する問題