2011-03-08 1 views
3

私は、ビットマップごとに赤い線を描画する必要があります私がマウスをクリックした場所で、その上をマウスでクリックします。WPF、C#:私は、画像制御</p> <p> </p> <p></p> <p>にビットマップイメージを持っているイメージコントロール内の既存のビットマップ上に線を引く

最初にLineオブジェクトを作成すると思ったが、Lineを追加できないことがわかった。私はキャンバスが必要です。しかし、キャンバスにイメージを置くと、ビットマップがキャンバス全体に広がらず(ビットマップの座標によってキャンバス上の場所が決まるため、ビットマップが間違って表示されることがわかりました)

私は、グラフィックス

Graphics graphics = Graphics.FromImage(bitmapImg); 
graphics.DrawLine(new System.Drawing.Pen(System.Drawing.Color.Red), 0, 0, bitmapImg.Width, bitmapImg.Height); //not the line yet, just for testing 
    graphics.DrawImage(bitmapImg, 0, 0, bitmapImg.Width,bitmapImg.Height); 
     graphics.Dispose(); 

を使用してみましたが、私は何も私のビットマップ上に描かれます `tを........

は今、私が思うに、私はおそらく配列にビットマップを取得する必要がありますし、ピクセルカラーを変更してビットマップのラインを取得します。私はこれが非常に遅いと信じています。

私は今visualDrawingで何かをしようとしています、しかし、私はそれがWPF C#で既存のビットマップ上にラインを得るための良い方法です何

:-(まだ動作するようになっていない????とそれを削除する方法?

を私は任意の助けのために喜んでいるだろう!ありがとうございます!私は、MSのフォーラムページに既にそれを掲示していないが、今のところ何の答え。

+0

画像と線を同じグリッドセルに入れて、それらが重なり合うようにします。 – adrianm

答えて

4

あなたはGraphics.FromImageを行うと、このGraphicsクラス(とまたSystem.Drawing.Pen)はWPFに属していないため、WinFormsの一部であり、WindowsのGDI +呼び出しを内部的に使用していますWPFの上に描画することはできません。

コードの最初の行をコンパイルするときにエラーが発生しなかった場合、bitmapImgは、System.Drawing.Image(WinFormsから)であり、WPFの画像コントロールではありません(System.Window.Controls.Image)。

<Grid> 
    <Image Source="your image" /> 
    <Line Name="line" Visibility="Hidden" Stroke="Red" StrokeThickness="1" /> 
</Grid> 

次に、あなたのクリックイベントハンドラにあなたが目に見えるラインを作ることができますし、それをあなたがしたい座標与える:

をadrianm述べたように

、最も簡単な方法は、おそらくグリッドを使用するようになります

line.Visibility = Visible; 
line.X1 = mouse_x; 
line.Y1 = mouse_y; 
line.X2 = ...; 
line.Y2 = ...; 
+0

ご協力いただきありがとうございます!しかし、私は画像(WPF)に添付されたズームを持っており、これはわずか1つのコンテンツが必要です。行を追加すると、次のようになります。プロパティ 'content'が複数回設定されています。私はズーム後に追加しようとします。その他の方法で? Natalie

+0

これは機能します!もちろん、ラインはズームしませんが、今は問題ありません。本当にありがとう! – Natalie