1

我不太擅长 C#,但请耐心等待,我正在尝试创建一个可以编辑小尺寸(16x16、32x32 等)图片的程序,特别是 Minecraft 纹理文件。我需要创建一个可以在其上显示矩形的绘图表面。我想使用 WPF 矩形,因为到目前为止它们对我有用。我尝试将它们放在 WPF Grid 面板上,但创建一个具有 1 像素宽的行和列的大小合适的网格面板大约需要 30 秒,而且时间相当长。任何想法都是有帮助的。

4

2 回答 2

1

我建议使用更轻量级的东西,例如DrawingVisuals. 或者,如果您真的只想显示纹理,您可以对它们进行预处理并将结果显示为 normal Image

于 2012-08-22T03:40:06.200 回答
1

我觉得你的方向可能不是最有效的。当然,将图像转换成很多矩形是完全可能的,但是一旦你有很多像素,它就真的没有效率了。(32x32 = 1024 个矩形。)

因此,与其像您想要的那样与 WPF 矩形一起使用,我会敦促您重新考虑。相反,请尝试使用WriteableBitmap

根据您模糊的描述,我假设您正在编写一个类似绘画的程序,用户可以在其中选择一种颜色并用鼠标在具有该颜色的纹理上绘制。通过将 WriteableBitmap 绑定到 Image 标签,并为 MouseMove 事件添加事件侦听器,您可以获得鼠标位置,以及是否按下鼠标左键/右键。将其与一些涉及图像的 x 位置和 ActualWidth 以及 y 位置和 ActualHeight 的数学相结合,您可以找到鼠标所在的像素,并设置该像素的颜色。

所以基本上,矩形不是你最好的选择。特别是如果您尝试制作一个 32x32 的网格来包含它们。使用可写位图。

于 2012-08-22T07:56:39.810 回答