如何在 AvaloniaUI 中逐像素绘制位图?

How to draw pixel-by-pixel on bitmap in AvaloniaUI?

我正在尝试编写一个绘图应用程序,允许用户在 canvas 上 select 两个点并在这些点之间逐像素绘制一条线。在 WinForms 中,这将是一个简单的解决方案 - 创建一个 canvas,获取其位图,使用 SetPixel 方法在位图上绘制,然后替换 canvas 位图。我想知道在 AvaloniaUI 中是否有类似的方法来做到这一点?据我了解,它在引擎盖下使用 SkiaSharp。但是,在 Avalonia.Controls.Canvas 上呈现 SKCanvas 的解决方案似乎……很难。虽然SKBitmap也有SetPixel的方法。问题不在于如何画线——而是关于如何在 AvaloniaUI 中的位图上 设置单个像素并将此位图设置为 Avalonia.Controls.Canvas。 以下是我找到的一些链接:

P.S。这听起来很诱人,但大学也不允许像官方文档示例 (https://docs.avaloniaui.net/docs/controls/canvas) 那样逐个绘制大小为 1x1 的矩形。

P.P.S。我不要求任何人为我做功课 - 如果您担心这一点,请将此视为框架比较问题,而不是“请为我做”的问题。我已经找到并链接了我可以使用的解决方案——在我看来,应该有一种更简单的方法来实现我想要的结果。这就是我问这个问题的原因 - 以防我遗漏了什么。

做绝地武士:这不是某个学生试图将工作交给其他人。你可以按你的公司去

更新:您可以在图像控件上交换位图:https://docs.avaloniaui.net/docs/controls/image

最初的问题(虽然表达得不好,我的错)是为了澄清是否有办法在 Avalonia 位图上执行 SetPixel 操作。不幸的是,目前,它似乎不是一个可用的选项:所以唯一的方法是创建自定义绘图上下文或控制或在不同位图类型之间进行转换(如 System.Drawing.BitmapSkBitmap 来自 SkiaSharp) 到 Avalonia.WriteableBitmap。所有这些解决方案都在原始问题中被引用。