2010-10-18 52 views
1

道歉,如果已经有线程,我找不到一个可以让我的牙齿进入的线程。Newb:WPF自定义图形控件 - 从哪里开始

无论如何,我是WPF的新手,想要创建一个自定义控件,它将成为一种图形控件。图形总是由一个圆圈组成,其中包含几个方块的矩阵(实际上从几百到几千)矩形需要响应鼠标单击和鼠标悬停事件(最好可以通过键盘进行导航/选择)每个正方形将表示我编码的对象。

在过去,我使用了网格控件来显示彩色方块(在CBuilder中使用VCL),但我想制作一个图形版本。 (其实,我想问的另一个问题是,是否有WPF网格控件,我可以设置单个单元的颜色?)

问题是,从哪里开始?我是从画布开始画画的吗?我是否从现有对象派生?我只是有点缺乏实现的想法,所以任何指针或建议,你可以提供将大大收到。

BBZ

回答

1

首先,我会建议在WPF得到一个体面的手柄,以及它如何接近设定的问题。它与以前的.NET桌面技术(如WinForms)完全不同。一旦您对逻辑与UI的分离以及WPF如何解决问题有了很好的理解,那么您可以潜入并开始根据您遇到的情况做出正确的决策。

您提到的问题可以通过多种方式解决。关于您使用Grid的问题,可以这样做,因为这是一种布局类型。在安排视觉结构方面,它远远优于Canvas。定义的行/列只不过是容纳不同UI对象的容器。因此,将Rectangle推入Grid并根据需要着色会给你你正在寻找的效果。这个Rectangle然后可以成为一个自定义的控件,这将允许您定义不同的属性,以及鼠标悬挂的特定触发器等等。

在更高层次上,您将希望将此逻辑封装为UserControl也将保留您的自定义控件。也许UserControl包含Grid这将使用您的自定义控件。

希望这会给你一些关于如何开始的想法,但是更好地理解WPF将帮助你实现你的目标。

+0

感谢您的意见。网格听起来不错,但我不知道网格中数千个矩形的内存要求可能会如何。此外,是否容易动态调整所述网格的行数和列数? – Bob 2010-10-19 10:27:56

+0

是调整行/列数很容易,这里是一个关于在WPF中的网格控件的帖子... http://blogonwpfwcf.blogspot.com/2009/02/grid-in-wpf.html我不确定内存要求是什么,因为它取决于矩形以及它的功能或不具备的功能,但是我认为它们不会太坏。我这样说的原因是,我看到Silverlight Grids包含数百个汽车图像,并缩小了结果,性能相当高,并且通过浏览器。 – 2010-10-19 14:21:33