Graphics Newb:WPF自定义图形控件-从何处开始

Graphics Newb:WPF自定义图形控件-从何处开始,graphics,wpf-controls,Graphics,Wpf Controls,抱歉,如果已经有线索了,我找不到一条可以插入的线索 无论如何,我是WPF新手,希望创建一个自定义控件,它将是一种图形控件。图形总是由一个圆圈组成,包含一个由几个正方形组成的矩阵(实际上是几百到几千个)。这些正方形需要响应鼠标单击和鼠标悬停事件(理想情况下可以通过键盘导航/选择)。每个正方形将代表我编码的一个对象 在过去,我曾使用网格控件来显示彩色正方形(在CBuilder中使用VCL),但我想制作一个图形版本。(实际上,我想问的另一个问题是,是否有WPF网格控件,我可以在其中设置单个单元格的颜色

抱歉,如果已经有线索了,我找不到一条可以插入的线索

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

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

问题是,从哪里开始?我是从画布开始画的吗?我是否从现有对象派生?我只是有点缺乏关于实现的想法,所以你能提供的任何建议都会被广泛接受


BBz

首先,我建议对问题集进行适当的处理,以及如何处理问题集。它与以前的.NET桌面技术(如WinForms)有很大不同。一旦您对逻辑与UI的分离以及WPF如何解决问题有了一个良好的理解,那么您就可以深入研究,并根据所遇到的情况开始做出正确的决策

你提到的问题可以用多种方法解决。关于您关于使用
网格的问题,可以这样做,因为这是一种布局类型。在安排视觉结构方面,它远远优于
画布
。定义的行/列只不过是可以容纳各种UI对象的容器。因此,将一个
矩形
推入
网格
并根据需要进行着色,可以获得所需的效果。这个
矩形
可以成为一个自定义控件,允许您在上定义不同的属性,以及鼠标悬停的特定触发器等

在更高的级别上,您将希望将此逻辑封装为
UserControl
,它也将保存您的自定义控件。也许
UserControl
包含
Grid
,它将使用您的自定义控件


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

首先,我建议你正确处理问题集,以及如何处理问题集。它与以前的.NET桌面技术(如WinForms)有很大不同。一旦您对逻辑与UI的分离以及WPF如何解决问题有了一个良好的理解,那么您就可以深入研究,并根据所遇到的情况开始做出正确的决策

你提到的问题可以用多种方法解决。关于您关于使用
网格的问题,可以这样做,因为这是一种布局类型。在安排视觉结构方面,它远远优于
画布
。定义的行/列只不过是可以容纳各种UI对象的容器。因此,将一个
矩形
推入
网格
并根据需要进行着色,可以获得所需的效果。这个
矩形
可以成为一个自定义控件,允许您在上定义不同的属性,以及鼠标悬停的特定触发器等

在更高的级别上,您将希望将此逻辑封装为
UserControl
,它也将保存您的自定义控件。也许
UserControl
包含
Grid
,它将使用您的自定义控件


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

谢谢你的建议。网格听起来不错,不过我想知道网格中几千个矩形的内存需求是什么。另外,动态调整所述网格的行/列计数容易吗?是的,调整行/列计数很容易,下面是一篇关于WPF中网格控制的帖子。。。我不确定内存需求会是什么,因为它取决于矩形以及它能容纳或不能容纳什么,但是我不认为它们会很糟糕。我之所以这么说,是因为我看到Silverlight网格包含数百张汽车图像,你缩小了结果的范围,效果相当好,可以通过浏览器查看。谢谢你的建议。网格听起来不错,不过我想知道网格中几千个矩形的内存需求是什么。另外,动态调整所述网格的行/列计数容易吗?是的,调整行/列计数很容易,下面是一篇关于WPF中网格控制的帖子。。。我不确定内存需求会是什么,因为它取决于矩形以及它能容纳或不能容纳什么,但是我不认为它们会很糟糕。我之所以这么说,是因为我看到Silverlight网格包含数百个汽车图像,你缩小了结果的范围,结果相当好,而且是通过浏览器显示的。