如何在C#中创建一个用于显示矩形的好面板?

时间:2012-08-22 03:27:00

标签: c# wpf

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

2 个答案:

答案 0 :(得分:1)

我建议使用像DrawingVisuals这样更轻量级的东西。或者,如果您真的只想显示纹理,可以预处理它们并将结果显示为正常Image

答案 1 :(得分:1)

我觉得你的方向可能不是最有效的。 当然,将图像转换为很多矩形是很有可能的,但是一旦你有很多像素,它就会变得非常有效。 (32x32 = 1024个矩形。)

所以,不要像你想的那样一起使用WPF矩形,我会敦促你重新考虑。相反,请尝试使用WriteableBitmap

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

所以基本上,矩形不是你最好的选择。特别是如果您尝试使用32x32网格来包含它们。使用WriteableBitmap。