2016-05-19 28 views
0

私はC#WFのアプリケーションを持っています。ここでは、ユーザーが背景で.png画像を持つPictureBoxをクリックしてクリック座標を描画します。私はWPFで同じことをやってみたいが、私はいくつかの問題を抱えてC#WPF描画コンポーネントImageコンポーネント、MouseClick座標

private void pictureBox1_MouseClick(object sender, MouseEventArgs e) { 
    //some app logic 
    Graphics g = pictureBox1.CreateGraphics(); 
    Brush brush = Brushes.Black; 
    //some app logic, drawing looks like this 
    g.FillRectangle(brush, e.X, e.Y, 10, 20); 
} 

:私はGraphicsSystem.Drawing)とMouseCLickイベントを使用しています何のPictureBoxだけで、存在しない、WPFで

  1. Image
  2. Image要素は、WPF
  3. に存在しない無 MouseClickイベント
  4. System.Drawing名前空間を持っていません

は私がGoogleにしようとしたが、私は、フォーム上に描画するだけでどのように設立され、私の質問があるので、私は、クリックの座標を取得する方法を見つけることができませんでした:クリックのXY座標を取得するために

  1. 方法Imageの要素に?座標は保存され、後で、私は知る必要があり、背景画像のどのピクセルがクリックされたかを知る必要があります。
  2. Image要素のXY座標に形状を描画する方法は?
  3. Imageを使用する必要がありますか、それとも優れたコンポーネントがありますか?私は背景として.pngイメージをディスクに保存する必要があります。

ありがとうございます。

答えて

0

感謝を参照してください。ルックス不足している情報がありましたら、誰かが必要とする場合の完全な描画コードを以下に示します:

private void MyCanvasComponent_MouseDown(object sender, MouseButtonEventArgs e) { 
    MyCanvasComponent.Children.Clear(); //removes previously drawed objects 


    double x = e.GetPosition(MyCanvasComponent).X; //get mouse coordinates over canvas 
    double y = e.GetPosition(MyCanvasComponent).Y; 

    Ellipse elipsa = new Ellipse(); //create ellipse 
    elipsa.StrokeThickness = 3; 
    elipsa.Stroke = Brushes.Red; 
    elipsa.Margin = new Thickness(x, y, 0, 0);  
    elipsa.Width = 20; 
    elipsa.Height = 20; 

    //add (draw) ellipse to canvas 
    MyCanvasComponent.Children.Add(elipsa); 
} 

背景画像によって単純に加算:

ImageBrush brush = new ImageBrush(); 
brush.ImageSource = new BitmapImage(new Uri(@"Image1.png", UriKind.Relative)); 
MyCanvasComponent.Background = brush; 
関連する問題