【发布时间】:2010-03-14 20:14:41
【问题描述】:
我正在从 EmguCV 扩展 ImageBox 控件。控件的Image 属性可以设置为实现IImage 接口的任何内容。
以下所有的都实现了这个接口:
Image<Bgr, Byte>
Image<Ycc, Byte>
Image<Hsv, Byte>
现在我想在上述类型的对象上调用Draw 方法(无论它可能是什么)。
问题是当我访问 Image 属性时,返回类型是IImage。 IImage 没有实现Draw 方法,但以上都实现了。
我相信我可以将IImage 类型的对象转换为上述对象之一(右侧),并且可以访问Draw 方法。但是我怎么知道什么是正确的呢?如果您有更好的方法,也请提出建议。
编辑
抱歉,我忘了提一条重要信息。上述每个类的 Draw 方法都采用一个不同的参数。例如Draw 用于 Image<Bgr, Byte> 采用 Bgr 类型的参数,而 Draw 用于 Image<Hsv, Byte> 采用 Hsv 类型的参数。
【问题讨论】:
-
是否有权访问 IImage 和 Image 代码?
-
EmguCV 是一个开源项目,虽然我真的更喜欢只使用他们的二进制文件 :)
-
图片界面/实现看起来设计得不太好。
-
感谢所有回答的人。我学到了一些非常好的东西。接受的答案通常可能导致非常草率的代码。但就我而言,我只需要做一次,我不想编辑 EmguCV 源文件。我用过这个,所以我把它标记为接受。