WPF, C#: 在现有的一条线上绘制一条线 bitmap 在图像管理元素中

我有一个形象 bitmap 在图像管理元素中


我需要画一条红线 bitmap 每次我用鼠标点击它,在我点击鼠标的地方。

起初我考虑了创建一个线性对象,但我发现我无法添加此行。 我需要画布。 但如果我把我的形象放在画布上,我的 bitmap 没有在整个帆布上伸展 /我发现坐标 bitmap 确定帆布上的地方,所以我的 bitmap 显示不正确。/

然后我试图使用图形


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//;


但是,在我的 bitmap 什么都没有画........

现在我觉得我可能需要放 bitmap 在数组中,然后更改像素的颜色以获得一行 bitmap. 我觉得它会很慢。

现在我正在努力做点什么 visualDrawing, 但是,我没有结果: -/

什么是将字符串到现有的好方法 bitmap 在 WPF C#???? 如何删除它?

我会很高兴有任何帮助! 谢! 我已经在论坛页面上发布了它 MS, 但仍然没有答案。
已邀请:

奔跑吧少年

赞同来自:

当你做的时候
Graphics.FromImage

, 这个班
Graphics

/和
System.Drawing.Pen

/ 不属于 WPF, 他们是一部分 WinForms, 他们是内部使用电话 Windows' GDI+ 用于绘图,无法绘制顶部 WPF.

如果在编译代码的第一行时尚未收到错误,那么可能是您的
bitmapImg

- 这是
System.Drawing.Image

/的 WinForms/, 不是图像控制元素 WPF /
System.Window.Controls.Image

/.

正如已经提到的Adrianm一样,最简单的方法可能会使用该网格:


<grid>
<image source="your image"/>
<line name="line" stroke="Red" strokethickness="1" visibility="Hidden"></line>
</grid>


然后在事件处理程序中 click 您可以让一条线可见并提供必要的坐标:


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

卫东

赞同来自:

您可以将画布放在您的顶部的透明背景 BitmapImage, 然后根据需要绘制行。
来自文件的代码。 xaml:


<grid>
<image source="C:\Users\sm143444\Desktop\download.jpg"/>
<canvas background="Transparent" x:name="draw"></canvas>
</grid>


代码 Xaml.cs:


public MainWindow//
{
InitializeComponent//;
Point startPoint = new Point/50, 50/;
Line newLine = new Line//;
newLine.Stroke = Brushes.Black;
newLine.Fill = Brushes.Black;
newLine.StrokeLineJoin = PenLineJoin.Bevel;
newLine.X1 = startPoint.X;
newLine.Y1 = startPoint.Y;
newLine.X2 = startPoint.X + 100;
newLine.Y2 = startPoint.Y + 100;
newLine.StrokeThickness = 2;
this.draw.Children.Add/newLine/;
}


https://i.stack.imgur.com/QrCcw.png
或者你甚至可以添加 ZIndex 到你的形象和行,使它们介绍不同的画布层。

要回复问题请先登录注册